PHP生成缩略图(2)--等比缩略图

分析:

当原图是横屏或竖屏的时候,希望缩略图会保持原来的比例缩放,不改变原图的完整性,即等比缩放!

此时只需确定原图的宽高,以及目标图的最大宽高,比较目标图的宽高比例与原图的宽高比例的大小,以此来判断原图是横屏或竖屏来确定以高或宽为标准即可!

代码如下:

//求目标图片的宽高
if ($max_width/$max_height < $src_width/$src_height) {
    
    $dst_w = $max_width;    //以宽为标准
    $dst_h = $max_width * $src_height/$src_width;
}else{
    
    $dst_h = $max_height;   //以高为标准
    $dst_w = $max_height * $src_width/$src_height;
}

完整代码如下:

<?php

//目标图片最大宽高
$max_width = 300;
$max_height = 300;

//创建一个真彩色的图像,支持的颜色数较多
$dst = imagecreatetruecolor($max_width, $max_height); //目标图宽高
$src = imagecreatefromjpeg('./01.jpg'); //源图

$src_width = imagesx($src);    //源图的宽度
$src_height = imagesy($src);    //源图的高度

//求目标图片的宽高
if ($max_width/$max_height < $src_width/$src_height) {
    
    //横屏图片以宽为标准
    $dst_w = $max_width;
    $dst_h = $max_width * $src_height/$src_width;
}else{
    
    //竖屏图片以高为标准
    $dst_h = $max_height; 
    $dst_w = $max_height * $src_width/$src_height;
}

//在目标图上显示的坐标位置
$dst_x = (int)(($max_width-$dst_w)/2);
$dst_y = (int)(($max_height-$dst_h)/2);

//生成缩略图
imagecopyresampled($dst,$src,$dst_x,$dst_y,0,0,$dst_w,$dst_h,$src_width,$src_height);

//输出到浏览器
header('content-type:image/png');
imagepng($dst);

//销毁图片资源
imagedestroy($dst);
imagedestroy($src);

 ?>

结果如下:

竖屏图片

横屏图片:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下页、再停留

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值