php生成高清缩略图实例详解


Posted in PHP onDecember 07, 2015

本文实例讲述了php生成高清缩略图的方法。分享给大家供大家参考,具体如下:

在使用php的函数生成缩略图的使用,缩略图很多情况下都会失真,这个时候需要有一些对应的解决方法

1.用imagecreatetruecolor和imageCopyreSampled函数分别取代imagecreate和imagecopyresized

2.给imagejpeg的第三个参数带上100(例:imagejpeg($ni,$toFile,100))

下面是具体的函数

function CreateSmallImage( $OldImagePath, $NewImagePath, $NewWidth=154, $NewHeight=134)
{
  // 取出原图,获得图形信息getimagesize参数说明:0(宽),1(高),2(1gif/2jpg/3png),3(width="638" height="340")
  $OldImageInfo = getimagesize($OldImagePath);
  if ( $OldImageInfo[2] == 1 ) $OldImg = @imagecreatefromgif($OldImagePath);
  elseif ( $OldImageInfo[2] == 2 ) $OldImg = @imagecreatefromjpeg($OldImagePath);
  else $OldImg = @imagecreatefrompng($OldImagePath);
  // 创建图形,imagecreate参数说明:宽,高
  $NewImg = imagecreatetruecolor( $NewWidth, $NewHeight );
  //创建色彩,参数:图形,red(0-255),green(0-255),blue(0-255)
  $black = ImageColorAllocate( $NewImg, 0, 0, 0 ); //黑色
  $white = ImageColorAllocate( $NewImg, 255, 255, 255 ); //白色
  $red  = ImageColorAllocate( $NewImg, 255, 0, 0 ); //红色
  $blue = ImageColorAllocate( $NewImg, 0, 0, 255 ); //蓝色
  $other = ImageColorAllocate( $NewImg, 0, 255, 0 );
  //新图形高宽处理
  $WriteNewWidth = $NewHeight*($OldImageInfo[0] / $OldImageInfo[1]); //要写入的高度
  $WriteNewHeight = $NewWidth*($OldImageInfo[1] / $OldImageInfo[0]); //要写入的宽度
  //这样处理图片比例会失调,但可以填满背景
  if ($OldImageInfo[0] / $NewWidth > $org_info[1] / $NewHeight) {
    $WriteNewWidth = $NewWidth;
    $WriteNewHeight = $NewWidth / ($OldImageInfo[0] / $OldImageInfo[1]);
  } else {
    $WriteNewWidth = $NewHeight * ($OldImageInfo[0] / $OldImageInfo[1]);
    $WriteNewHeight = $NewHeight;
  }
  //以$NewHeight为基础,如果新宽小于或等于$NewWidth,则成立
  if ( $WriteNewWidth <= $NewWidth ) {
    $WriteNewWidth = $WriteNewWidth; //用判断后的大小
    $WriteNewHeight = $NewHeight; //用规定的大小
    $WriteX = floor( ($NewWidth-$WriteNewWidth) / 2 ); //在新图片上写入的X位置计算
    $WriteY = 0;
  } else {
    $WriteNewWidth = $NewWidth; // 用规定的大小
    $WriteNewHeight = $WriteNewHeight; //用判断后的大小
    $WriteX = 0;
    $WriteY = floor( ($NewHeight-$WriteNewHeight) / 2 ); //在新图片上写入的X位置计算
  }
  //旧图形缩小后,写入到新图形上(复制),imagecopyresized参数说明:新旧, 新xy旧xy, 新宽高旧宽高
  @imageCopyreSampled( $NewImg, $OldImg, $WriteX, $WriteY, 0, 0, $WriteNewWidth, $WriteNewHeight, $OldImageInfo[0], $OldImageInfo[1] );
  //保存文件
//  @imagegif( $NewImg, $NewImagePath );
  @imagejpeg($NewImg, $NewImagePath, 100);
  //结束图形
  @imagedestroy($NewImg);
}
CreateSmallImage("./images/jiexie.jpg","./images/jiexie.small.jpg",200,300);
CreateSmallImage("./images/jiexie.jpg","./images/jiexie.middle.jpg",400,500);

希望本文所述对大家php程序设计有所帮助。

PHP 相关文章推荐
做个自己站内搜索引擎
Oct 09 PHP
一个查看session内容的函数
Oct 09 PHP
php下使用curl模拟用户登陆的代码
Sep 10 PHP
求PHP数组最大值,最小值的代码
Oct 31 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
帝国CMS留言板回复后发送EMAIL通知客户
Jul 06 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 PHP
微信第三方登录(原生)demo【必看篇】
May 26 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
php冒泡排序与快速排序实例详解
Dec 07 #PHP
PHP常用工具类大全附全部代码下载
Dec 07 #PHP
PHP+ajax分页实例简析
Dec 07 #PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
Dec 07 #PHP
php+ajax无刷新分页实例详解
Dec 07 #PHP
64位windows系统下安装Memcache缓存
Dec 06 #PHP
windows平台中配置nginx+php环境
Dec 06 #PHP
You might like
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
JavaScript事件列表解说
2006/12/22 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
python中threading超线程用法实例分析
2015/05/16 Python
python的mysqldb安装步骤详解
2017/08/14 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
几款好用的python工具库(小结)
2020/10/20 Python
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
计算s=f(f(-1.4))的值
2014/05/06 面试题
日语专业毕业生自荐信
2013/11/11 职场文书
给物业的表扬信
2014/01/21 职场文书
医药营销个人求职信
2014/04/12 职场文书
保护环境的标语
2014/06/09 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
Python import模块的缓存问题解决方案
2021/06/02 Python
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android