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 相关文章推荐
BBS(php &amp; mysql)完整版(七)
Oct 09 PHP
php&amp;java(二)
Oct 09 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
PHP mkdir()无写权限的问题解决方法
Jun 19 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
Jul 05 PHP
php将图片保存为不同尺寸图片的图片类实例
Mar 30 PHP
php简单统计中文个数的方法
Sep 30 PHP
php 修改上传文件大小限制实例详解
Oct 23 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
yii2实现Ueditor百度编辑器的示例代码
Nov 02 PHP
PHP中echo与print区别点整理
Mar 09 PHP
PHP遍历数组的6种方式总结
Nov 17 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
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
Web跨浏览器进程通信(Web跨域)
2013/04/17 Javascript
提取字符串中年月日的函数代码
2013/11/05 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
jQuery手机拨号界面特效代码分享
2015/08/27 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
Python中文件遍历的两种方法
2014/06/16 Python
python中sets模块的用法实例
2014/09/30 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
Django实现表单验证
2018/09/08 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
2014新年元旦活动策划方案
2014/02/18 职场文书
公共场所禁烟标语
2014/06/25 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
创业计划书之餐饮
2019/09/02 职场文书
Python创建SQL数据库流程逐步讲解
2022/09/23 Python