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入门
Oct 09 PHP
PHP 遍历文件实现代码
May 04 PHP
php实现用户在线时间统计详解
Oct 08 PHP
php 定义404页面的实现代码
Nov 19 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
PHP静态成员变量
Feb 14 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
php文件后缀不强制为.php的实操方法
Sep 18 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
input按钮的事件处理大全
2010/12/10 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
使用Python构建Hopfield网络的教程
2015/04/14 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
Python按钮的响应事件详解
2019/03/04 Python
利用Python实现kNN算法的代码
2019/08/16 Python
python是否适合网页编程详解
2019/10/04 Python
python实现滑雪者小游戏
2020/02/22 Python
django rest framework 过滤时间操作
2020/07/12 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
英国在线药房:Express Chemist
2019/03/28 全球购物
项目合作意向书范本
2014/04/01 职场文书
党员群众路线承诺书
2014/05/20 职场文书
演讲开场白台词大全
2015/05/29 职场文书
南京大屠杀观后感
2015/06/02 职场文书
少年犯观后感
2015/06/11 职场文书
大学生受助感言
2015/08/01 职场文书
晚会开幕词范文
2016/03/04 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
P站美图推荐——变身女主角特辑
2022/03/20 日漫