分析:

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

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

代码如下:

//求目标图片的宽高
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); ?>

结果如下:

竖屏图片

横屏图片:

最新文章

  1. IOS-当遇到tableView整体上移时的解决方案
  2. Lab_6_SysOps_AutoScaling_Linux_v2.5
  3. WPF,Silverlight与XAML读书笔记第四十六 - 外观效果之三皮肤与主题
  4. crontab 日志备份定时任务
  5. Eclipse搭建Android5.0应用开发环境 “ndk-build”:launchingfailed问题解决
  6. [原]Unity3D深入浅出 - 认识开发环境中的Layers面板
  7. jmeter java请求
  8. SpringMVC第一天(其他)
  9. Zencart批量删除无图片产品
  10. iOS中 为 iOS 建立 Travis CI 韩俊强的博客
  11. C# Quartz定时任务corn时间设置详解
  12. python之网络编程--锁、信号量、线程、队列
  13. &#127827; react16.2新特性 &#127827;
  14. shell脚本----周期压缩备份日志文件
  15. zoj 1151 Word Reversal(字符串操作模拟)
  16. Anroid 解决小米和魅族不能在mac上调试
  17. Jsp基础语法(由简入杂)
  18. 【BZOJ】【2946】【POI2000】公共串
  19. CSS深入了解border:利用border画三角形等图形
  20. 剑指offer(36-40)编程题

热门文章

  1. POJ 1577Falling Leaves(二叉树的建立)
  2. JS - ECMAScript2015(ES6)新特性
  3. (原创)JAVA阻塞队列LinkedBlockingQueue 以及非阻塞队列ConcurrentLinkedQueue 的区别
  4. css style 标签可编辑
  5. 【10】JMicro微服务-API网关
  6. AsyncTask的前世今生
  7. Java学习之路(十一):IO流&lt;前戏&gt;
  8. hadoop2.x 安装配置
  9. PMP备考指南之第二章:项目运作环境
  10. Hadoop+Hive 操作mongodb数据