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 nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
Aug 21 PHP
php操作sqlserver关于时间日期读取的小小见解
Nov 29 PHP
php 生成随机验证码图片代码
Feb 08 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
php数组编码转换示例详解
Mar 11 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
PHP PDO fetch 模式各种参数的输出结果一览
Jan 07 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
Smarty缓存机制实例详解【三种缓存方式】
Jul 20 PHP
如何使用php生成zip压缩包
Apr 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
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
php二维数组转成字符串示例
2014/02/17 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
php中上传文件的的解决方案
2018/09/25 PHP
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
2017/06/23 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
2020/04/11 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
[02:16]DOTA2英雄基础教程 干扰者
2014/01/15 DOTA
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
python中执行shell命令的几个方法小结
2014/09/18 Python
初步解析Python下的多进程编程
2015/04/28 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
python统计字符的个数代码实例
2020/02/07 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
银行自荐信范文
2013/10/07 职场文书
大学生冰淇淋店商业计划书
2014/01/14 职场文书
区域经理岗位职责
2015/02/02 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
全陪导游词开场白
2015/05/29 职场文书
详解python网络进程
2021/06/15 Python