php生成图片缩略图功能示例


Posted in PHP onFebruary 22, 2017

本文实例讲述了php生成图片缩略图功能。分享给大家供大家参考,具体如下:

完整代码如下(为方便阅读,代码使用http://tools.3water.com/code/phpformat进行了格式化处理):

<?php
/*
 * Created on 2011-3-18
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
*/
/*构造函数-生成缩略图+水印,参数说明:
$srcFile-图片文件名,
$dstFile-另存文件名,
$markwords-水印文字,
$markimage-水印图片,
$dstW-图片保存宽度,
$dstH-图片保存高度,
$rate-图片保存品质*/
makethumb("1.jpg", "aa/b.jpg", "50", "50");
function makethumb($srcFile, $dstFile, $dstW, $dstH, $rate = 100, $markwords = null, $markimage = null) {
  $data = GetImageSize($srcFile);
  switch ($data[2]) {
    case 1:
      $im = @ImageCreateFromGIF($srcFile);
    break;
    case 2:
      $im = @ImageCreateFromJPEG($srcFile);
    break;
    case 3:
      $im = @ImageCreateFromPNG($srcFile);
    break;
  }
  if (!$im) return False;
  $srcW = ImageSX($im);
  $srcH = ImageSY($im);
  $dstX = 0;
  $dstY = 0;
  if ($srcW * $dstH > $srcH * $dstW) {
    $fdstH = round($srcH * $dstW / $srcW);
    $dstY = floor(($dstH - $fdstH) / 2);
    $fdstW = $dstW;
  } else {
    $fdstW = round($srcW * $dstH / $srcH);
    $dstX = floor(($dstW - $fdstW) / 2);
    $fdstH = $dstH;
  }
  $ni = ImageCreateTrueColor($dstW, $dstH);
  $dstX = ($dstX < 0) ? 0 : $dstX;
  $dstY = ($dstX < 0) ? 0 : $dstY;
  $dstX = ($dstX > ($dstW / 2)) ? floor($dstW / 2) : $dstX;
  $dstY = ($dstY > ($dstH / 2)) ? floor($dstH / s) : $dstY;
  $white = ImageColorAllocate($ni, 255, 255, 255);
  $black = ImageColorAllocate($ni, 0, 0, 0);
  imagefilledrectangle($ni, 0, 0, $dstW, $dstH, $white); // 填充背景色
  ImageCopyResized($ni, $im, $dstX, $dstY, 0, 0, $fdstW, $fdstH, $srcW, $srcH);
  if ($markwords != null) {
    $markwords = iconv("gb2312", "UTF-8", $markwords);
    //转换文字编码
    ImageTTFText($ni, 20, 30, 450, 560, $black, "simhei.ttf", $markwords); //写入文字水印
    //参数依次为,文字大小|偏转度|横坐标|纵坐标|文字颜色|文字类型|文字内容
    
  } elseif ($markimage != null) {
    $wimage_data = GetImageSize($markimage);
    switch ($wimage_data[2]) {
      case 1:
        $wimage = @ImageCreateFromGIF($markimage);
      break;
      case 2:
        $wimage = @ImageCreateFromJPEG($markimage);
      break;
      case 3:
        $wimage = @ImageCreateFromPNG($markimage);
      break;
    }
    imagecopy($ni, $wimage, 500, 560, 0, 0, 88, 31); //写入图片水印,水印图片大小默认为88*31
    imagedestroy($wimage);
  }
  ImageJpeg($ni, $dstFile, $rate);
  ImageJpeg($ni, $srcFile, $rate);
  imagedestroy($im);
  imagedestroy($ni);
}
?>
PHP 相关文章推荐
PHP6 先修班 JSON实例代码
Aug 23 PHP
在JavaScript中调用php程序
Mar 09 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
THINKPHP内容分页代码分享
Jan 14 PHP
PHP的APC模块实现上传进度条
Oct 27 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 PHP
PHP fprintf()函数用法讲解
Feb 16 PHP
php array 转json及java 转换 json数据格式操作示例
Nov 13 PHP
PHP扩展安装方法步骤解析
Nov 24 PHP
php图形jpgraph操作实例分析
Feb 22 #PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 #PHP
php可变长参数处理函数详解
Feb 22 #PHP
php操作access数据库的方法详解
Feb 22 #PHP
Smarty3配置及入门语法
Feb 22 #PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 #PHP
PHP+JavaScript实现无刷新上传图片
Feb 21 #PHP
You might like
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
J2EE面试题大全
2016/08/06 面试题
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
稽核岗位职责
2015/02/10 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL