dongnao1908
2015-06-23 15:34
浏览 293
已采纳

如何使用Imagick将图像的大小减小到设定的宽度?

I have a photo gallery where the cover photo has images of 290px set width and the height can be anything. I'm going for a Pinterest type of effect. I'm trying to do this using PHP and Imagick, but cannot seem to figure it out. Can someone assist?

Here is the function that I have so far, but just getting small images. I read somewhere that setting the height to a number higher makes it auto but to no avail.

function thumbnailImage($imagePath,$real_target_pathThumb) {

                $imagick = new Imagick($imagePath);
                $imagick->thumbnailImage(290, 9999, true, true);

                $imagick->writeImage($real_target_pathThumb);

            };

图片转代码服务由CSDN问答提供 功能建议

我有一个照片库,封面照片的图像宽度为290像素,高度可以是任何高度。 我想要Pinterest类型的效果。 我正在尝试使用PHP和Imagick来做这件事,但似乎无法弄明白。 有人可以帮忙吗?

这是我到目前为止的功能,但只是获取小图像。 我在某处读到将高度设置为更高的数字会使其自动但无效。

  function thumbnailImage($ imagePath,$ real_target_pathThumb){
 
 $ imagick = 新的Imagick($ imagePath); 
 $ imagick-> thumbnailImage(290,9999,true,true); 
 
 $ imagick-> writeImage($ real_target_pathThumb); 
 
}; 
   
 
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • douchen7366 2015-06-23 15:58
    已采纳

    Since thumbnailImage function does not support one-dimension limits, the best approach is to use aspect ratio and calculate thumbnail height manually. This is as simple as:

    $imagick = new Imagick($imagePath);
    $imagick->thumbnailImage(290, (int)(290 * $imagick->getImageHeight() / $imagick->getImageWidth()));
    

    Also you can omit (or set to false) fill parameter from imagick's thumbnailImage method, like this

    $imagick->thumbnailImage(290, 9999, true);
    

    By specifing fill parameter you're telling the function to fit the image into given dimensions and then fill all unused space with color.

    Whithout fill parameter this approach should work for most of the time, but will fail if someone upload an image that should be higher than 9999px.

    点赞 打赏 评论

相关推荐 更多相似问题