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

如何使用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);

            };
  • 写回答

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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题