调整大小时的图像尺寸计算(php + imagemagick)

时间:2011-04-08 10:58:52

标签: php imagemagick

$size1 = 170;
$size2 = 128;


if($width > $height){

exec("convert ".$startfile." -resize x".$size2." -quality 100 ".$resultfile);

} else {

exec("convert ".$startfile." -resize ".$size1." -quality 100 ".$resultfile);
}

exec("convert ".$resultfile." -gravity Center -crop ".$size1."x".$size2."+0+0 ".$resultfile);

需要帮助来调整图像大小170x128像素。 上面的功能正常,但有一个问题。如您所见,如果图像宽度大于高度,则脚本首先使图像高度为128像素。当宽度和高度之间存在小的差异时,会出现问题。

例如,如果图像尺寸为387x310像素,则脚本将使用语句 if($ width> $ height),并使图像高度为128px。问题是,同时图像宽度将调整为160像素。但是在调整大小后我需要170像素的宽度。

我需要知道将图像宽度调整为128像素高度后的图像宽度。我需要这样的东西:

if($width > $height && $width_after_resizing > 127) {
} else {
}

有什么方法可以在裁剪前计算图像尺寸吗?感谢。

3 个答案:

答案 0 :(得分:0)

如果您启用了gd,则可以使用getimagesize http://php.net/manual/en/function.getimagesize.php

答案 1 :(得分:0)

根据$ height检查$ width假定目标是方形的。 如果你改变了怎么办?

if($width > $height){

if($width/$size1 > $height/$size2){

答案 2 :(得分:0)

您想要调整宽高比以获得指定的大小。

添加'!'到-resize参数。

有关imagemagick的更多直接信息,请访问IM论坛 http://www.imagemagick.org/discourse-server/viewforum.php?f=1