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 相关文章推荐
真正面向对象编程:PHP5.01发布
Oct 09 PHP
C# Assembly类访问程序集信息
Jun 13 PHP
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
PHP similar_text 字符串的相似性比较函数
May 26 PHP
解析phpstorm + xdebug 远程断点调试
Jun 20 PHP
php中autoload的用法总结
Nov 08 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
May 30 PHP
php实现文章评论系统
Feb 18 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 PHP
Laravel 5.5 实现禁用用户注册示例
Oct 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
ThinkPHP之import方法实例详解
2014/06/20 PHP
php中switch语句用法详解
2015/08/17 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
浅谈JS之iframe中的窗口
2016/09/13 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
python pickle 和 shelve模块的用法
2013/09/16 Python
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
Python调用C++程序的方法详解
2017/01/24 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
python查看数据类型的方法
2019/10/12 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
盛大笔试题
2016/11/05 面试题
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
相亲活动方案
2014/08/26 职场文书
2015年校长新年寄语
2014/12/08 职场文书
个人德育工作总结
2015/03/05 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android
JavaScript实现栈结构详细过程
2021/12/06 Javascript
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis