将图像调整为特定比例而不放大

时间:2011-12-17 21:59:32

标签: image math resize

我需要为图像生成新尺寸以匹配给定宽度和高度的比例......但不增加原始尺寸。

这个概念似乎很简单但我似乎无法加入这些点。

此外,对于代码示例,语言是PHP。

更新

这是我到目前为止所做的: http://codepad.org/fTdCNhQf

这是我需要的输出:

Example Image • (无法嵌入)

2 个答案:

答案 0 :(得分:1)

由于放大不是一种选择,因此您唯一的选择是裁剪和扩展。

试试这个:假设您的图片为W*H,所需宽高比为R

  • 使用宽度和宽高比计算目标高度TH = W/R
  • 使用高度和宽高比计算目标宽度TW = H*R
  • 计算区域更改aH = ABS(TH-H)*WaW = ABS(TW-W)*H
  • 如果aH小于aW,请使用目标宽度;根据{{​​1}}
  • 的符号水平填充或裁剪图像
  • 否则,使用目标高度;根据{{​​1}}
  • 的叹息垂直填充或裁剪图像

这是一个简单的例子:

TH-H

结果操作:由于TW-W小于Target R: 5/6 Image: W=200, H= 300; TH = 200/5*6 = 240 TW = 300*5/6 = 250 aH = 60*200=12000 aW = 50*300=15000 ,因此将图像垂直裁剪为240

答案 1 :(得分:0)

您是否正在使用ImageMagick库之类的东西来生成图像,或者您是否只需要根据已知比率生成新尺寸?此外,您是否需要从现有图像中发现比率?

这可能有用: http://www.zedwood.com/article/119/php-resize-an-image-with-gd