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 相关文章推荐
自己动手做一个SQL解释器
Oct 09 PHP
实现“上一页”和“下一页按钮
Oct 09 PHP
php中目录,文件操作详谈
Mar 19 PHP
PHP逐行输出(ob_flush与flush的组合)
Feb 04 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
PHP实现的多彩标签效果代码分享
Aug 21 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
php截取中文字符串函数实例
Feb 23 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
Sep 11 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
May 09 PHP
php实现session共享的实例方法
Sep 19 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验证码类代码分享(已封装成类)
2011/07/17 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
详解php反序列化
2020/06/10 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
详细解析Python当中的数据类型和变量
2015/04/25 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
python实现代码统计器
2019/09/19 Python
基于python 取余问题(%)详解
2020/06/03 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
力学专业毕业生自荐信
2013/11/17 职场文书
认真学习保证书
2015/02/26 职场文书
英文辞职信范文
2015/05/13 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
对PyTorch中inplace字段的全面理解
2021/05/22 Python
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle