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

发布于 2024-10-31 01:42:10 字数 778 浏览 0 评论 0原文

$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 px。当宽度和高度之间存在微小差异时,就会出现问题。

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

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

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

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

$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);

Need help to resize images 170x128 px.
The function above works OK but there is one problem. As you can see, if image width is greater than height, the script first makes image 128 px height. The problem appears when there is a small difference between width and height.

For example, if image dimensions are 387x310 px, the script will use statement if($width > $height) and will make image 128px height. The problem is that at the same time image width will be resized to 160 px. But I need 170 pix width after resizing.

I need to know what will be image width after resizing it to 128 px height. I need something like this:

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

Is there any way how to calculate image dimensions before cropping it? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

韶华倾负 2024-11-07 01:42:10

检查 $width 与 $height 假设目标将是正方形。
如果你改变怎么办

if($width > $height){

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

Checking $width against $height assumes the target will be square.
What if you change:

if($width > $height){

to

if($width/$size1 > $height/$size2){
冷月断魂刀 2024-11-07 01:42:10

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

if you have gd enabled you can use getimagesize http://php.net/manual/en/function.getimagesize.php

溇涏 2024-11-07 01:42:10

您想要调整纵横比以获得指定的尺寸。

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

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

You want to turn of aspect ratio to get exactly the size specified.

Add a '!' to the -resize argument.

For more direct information about imagemagick fo to the IM forums
http://www.imagemagick.org/discourse-server/viewforum.php?f=1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文