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横向重复区域显示二法
Sep 25 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
多个PHP中文字符串截取函数
Nov 12 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
Jun 05 PHP
php生成随机颜色方法汇总
Dec 03 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
PHP防止刷新重复提交页面的示例代码
Nov 11 PHP
thinkPHP实现签到功能的方法
Mar 15 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
php 数据结构之链表队列
Oct 17 PHP
PHP代码加密的方法总结
Mar 13 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实现多服务器共享SESSION数据的方法
2007/03/16 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
js null,undefined,字符串小结
2010/08/21 Javascript
javascript的offset、client、scroll使用方法详解
2012/12/25 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
Django 前后台的数据传递的方法
2017/08/08 Python
Python实现登陆文件验证方法
2018/10/06 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
详解python环境安装selenium和手动下载安装selenium的方法
2020/03/17 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
幼儿园庆六一活动方案
2014/03/06 职场文书
服务宗旨标语
2014/07/01 职场文书
护理专科学生自荐书
2014/07/05 职场文书
师德师风的心得体会
2014/09/02 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL