【问题标题】:Image dimensions calculation when resizing (php+imagemagick)调整大小时的图像尺寸计算(php+imagemagick)
【发布时间】:2011-04-15 12:13:45
【问题描述】:
$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) 并将图像高度设为 128 像素。问题是同时图像宽度将调整为 160 像素。但是调整大小后我需要 170 像素宽度。

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

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

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

【问题讨论】:

    标签: php imagemagick


    【解决方案1】:

    检查 $width 和 $height 假设目标是正方形的。 如果你改变了怎么办:

    if($width > $height){
    

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

    【讨论】:

    • Twelve47,谢谢,但没有帮助。调整 387x310 像素图像的大小时,结果是 160x128 而不是 170x128。因此,脚本首先将图像大小调整为 128 像素高度。 :(
    • 解决了这个问题。这有效:if($width/$size1 > $height/$size2){}。非常感谢你,Twelve47!
    • 不用担心,我现在在示例中交换了 size1 和 size2。
    【解决方案2】:

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

    【讨论】:

    • 我使用 getimagesize。我知道如何检测图像尺寸,但我的问题不在于它。我需要在调整大小之前计算图像尺寸。我需要知道如果我将其调整为 128 像素高度会变成图像宽度。
    【解决方案3】:

    你想改变纵横比以获得指定的大小。

    添加一个“!”到 -resize 参数。

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

    【讨论】:

      猜你喜欢
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      相关资源
      最近更新 更多