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

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

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

  function thumbnailImage($ imagePath,$ real_target_pathThumb){

$ imagick = 新的Imagick($ imagePath);
$ imagick-&gt; thumbnailImage(290,9999,true,true);

$ imagick-&gt; writeImage($ real_target_pathThumb);

};
</ 代码> </ pre>
</ div>

展开原文

原文

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个回答



由于thumbnailImage函数不支持一维限制,因此最好的方法是使用宽高比并手动计算缩略图高度。 这很简单:</ p>

  $ imagick = new Imagick($ imagePath); 
$ imagick-&gt; thumbnailImage(290,(int)(290 * $ imagick- &gt; getImageHeight()/ $ imagick-&gt; getImageWidth()));
</ code> </ pre>

您还可以从imagick的thumbnailImage方法中省略(或设置为false)填充参数 ,像这样</ p>

  $ imagick-&gt; thumbnailImage(290,9999,true); 
</ code> </ pre>

通过指定 填充参数你告诉函数使图像适合给定的尺寸,然后用颜色填充所有未使用的空间。</ p>

没有填充参数这种方法应该在大多数时间都有效,但是 如果有人上传的图像应该高于9999px,则会失败。 </ p>
</ div>

展开原文

原文

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.

douxu0550
douxu0550 成功了! 谢谢!
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问