在php中调整具有精​​确宽度和高度的图像

时间:2014-03-07 10:50:52

标签: php image resize

我确信这个话题已被讨论了很多次,我从昨天晚上开始这样做,但到现在还没有完全满意。我使用下面的代码,它给了我一个调整大小的图像,但缩放不正确。高度和宽度不是正确的比例。

我找不到像jsfiddle这样的好小提琴,你可以看到输出,所以在这里粘贴我的代码。

您可以在此处查看原始图片网址,我也附上了已调整大小的图片。

http://distilleryimage4.s3.amazonaws.com/b1da08e4484511e38e4d0a7011810191_7.jpg

$filename = 'http://distilleryimage4.s3.amazonaws.com/b1da08e4484511e38e4d0a7011810191_7.jpg';
//the resize will be a percent of the original size
$percent = 0.589;
$percent_height = 0.294;

// Content type
header('Content-Type: image/jpeg');

// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent_height;

// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);


imagejpeg($thumb);
imagedestroy($thumb);

Resized Image

2 个答案:

答案 0 :(得分:2)

这基本上是一个数学问题:

您正在将宽度和高度缩放到不同的比例($percent$percent_height)。您应该将它们(宽度和高度)按相同的百分比缩放,以使图像的大小调整为相同的比例。也许我不明白你的问题,但我认为你应该改变这一行:

$newheight = $height * $percent_height;

$newheight = $height * $percent;

(如果我们不在这里使用它,请删除$percent_height = 0.294;

答案 1 :(得分:0)

我会使用Imagick。我正在使用imagecreatetruecolor调整大小,但需要花费大量时间(0.5秒)才能将1920 * 1080图像调整为150 * 120。

如果您仍想使用imagecreatetruecolor:来获得正确的scalling,请使用this code