【发布时间】:2011-02-01 15:31:31
【问题描述】:
大家好,我有一个 php 脚本可以将图像调整到特定大小,如果方面相同,它只会调整它们的大小,但如果它不同,它会先裁剪它们。我只是想检查我的逻辑是否正确,这将计算所有源和目标图像尺寸的相关尺寸:
$sourceratio = $actualsourcewidth / $actualsourceheight;
$targetratio = $targetwidth / $targetheight;
if ($targetratio < $sourceratio)
{
$srcheight = $actualsourceheight;
$srcwidth = $actualsourceheight * $targetratio;
$srcy = 0;
$srcx = floor(($actualsourcewidth - $srcwidth) / 2);
$srcwidth = floor($srcwidth);
} else if ($targetratio > $sourceratio)
{
$srcwidth = $actualsourcewidth;
$srcheight = $actualsourcewidth / $targetratio;
$srcy = floor(($actualsourceheight - $srcheight) / 2);
$srcx = 0;
$srcheight = floor($srcheight);
} else
{
// Same aspect ratio so you can resize the image without cropping
$srcheight = $actualsourceheight;
$srcwidth = $actualsourcewidth;
$srcx = 0;
$srcy = 0;
}
据我所知,这应该可以捕捉到所有可能发生的情况并生成起始 x、y 坐标($srcx 和 $srcy)和源尺寸($srcwidth、$srcheight),然后可以将其传递到 @987654326 @。
我想检查的主要内容是比率检查将防止$srcheight 和$srcwidth 大于原始宽度/高度,因为这会破坏它,但我认为不会?
非常感谢大家!
戴夫
【问题讨论】:
标签: php resize image-manipulation gd crop