dongliao2241 2011-04-08 10:58
浏览 71
已采纳

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

$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.

  • 写回答

3条回答 默认 最新

  • dongxin5429 2011-04-08 11:44
    关注

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

    if($width > $height){
    

    to

    if($width/$size1 > $height/$size2){
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示