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+Tidy-完美的XHTML纠错+过滤
Apr 10 PHP
mysql 全文搜索 技巧
Apr 27 PHP
PHP Mysql编程之高级技巧
Aug 27 PHP
PHP源代码数组统计count分析
Aug 02 PHP
Uncaught exception com_exception with message Failed to create COM object
Jan 11 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
实例讲解PHP面向对象之多态
Aug 20 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PHP 使用二进制保存用户状态的实例
Jan 29 PHP
在laravel框架中使用model层的方法
Oct 08 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
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
jquery trigger实现联动的方法
2016/02/29 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
jQuery获取选中单选按钮radio的值
2016/12/27 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
python计数排序和基数排序算法实例
2014/04/25 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
python 连接sqlite及简单操作
2017/06/30 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
Django 拆分model和view的实现方法
2019/08/16 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
Flask处理Web表单的实现方法
2021/01/31 Python
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
vue实现倒计时功能
2021/03/24 Vue.js
水污染治理专业毕业生推荐信
2013/11/14 职场文书
外贸实习生自荐信范文
2013/11/24 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
主题党日活动总结
2014/07/08 职场文书