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 相关文章推荐
具有时效性的php加密解密函数代码
Jun 19 PHP
PHP利用str_replace防注入的方法
Nov 10 PHP
php设计模式之单例模式使用示例
Jan 20 PHP
PHP中判断文件存在使用is_file还是file_exists?
Apr 03 PHP
PHP实现将textarea的值根据回车换行拆分至数组
Jun 10 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
PHP统计当前在线用户数实例讲解
Oct 21 PHP
总结对比php中的多种序列化
Aug 28 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 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
体育彩票排列三组选三算法分享
2014/03/07 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
js获取图片的base64编码并压缩
2020/12/05 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
Python序列化pickle模块使用详解
2020/03/05 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
印度服装购物网站:Limeroad
2018/09/26 全球购物
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
如何设置Java的运行环境
2013/04/05 面试题
消防安全汇报材料
2014/02/08 职场文书
英文求职信写作小建议
2014/02/16 职场文书
自主招生自荐信格式
2015/03/04 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
早会开场白台词大全
2015/06/01 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
pandas中关于apply+lambda的应用
2022/02/28 Python
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
Python pyecharts绘制条形图详解
2022/04/02 Python