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 相关文章推荐
也谈 PHP 和 MYSQL
Oct 09 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
PHP学习之数组值的操作
Apr 17 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
php获取网页标题和内容函数(不包含html标签)
Feb 03 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
PHP经典算法集锦【经典收藏】
Sep 14 PHP
PHP图片水印类的封装
Jul 06 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
PHP正则判断一个变量是否为正整数的方法
Feb 27 PHP
php输出文字乱码的解决方法
Oct 04 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
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
2019/08/16 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
python清理子进程机制剖析
2017/11/23 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
Python socket服务常用操作代码实例
2020/06/22 Python
Python request post上传文件常见要点
2020/11/20 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
法学专业本科生自荐信范文
2013/12/17 职场文书
安全教育演讲稿
2014/05/09 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技