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 相关文章推荐
ADODB的数据库封包程序库
Dec 31 PHP
Zend Framework中的简单工厂模式 图文
Jul 10 PHP
php为字符串前后添加指定数量字符的方法
May 04 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
php判断两个日期之间相差多少个月份的方法
Jun 18 PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
Thinkphp5框架ajax接口实现方法分析
Aug 28 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
Cookie跨域问题解决方案代码示例
Nov 24 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/08/08 PHP
destoon之一键登录设置
2014/06/21 PHP
PHP浮点数精度问题汇总
2015/05/13 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
js location.replace与location.reload的区别
2010/09/08 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
js星星评分效果
2014/07/24 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
2015/10/19 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
销售演讲稿范文
2014/01/08 职场文书
教师产假请假条范文
2014/04/10 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
天气温馨提示语
2015/07/14 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
Go语言实现Snowflake雪花算法
2021/06/08 Golang