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 相关文章推荐
给多个地址发邮件的类
Oct 09 PHP
php 一元分词算法
Nov 30 PHP
php 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
php分页思路以及在ZF中的使用
May 30 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
PHP中模拟处理HTTP PUT请求的例子
Jul 22 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
May 31 PHP
Ajax+PHP实现的分类列表框功能示例
Feb 11 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
React中如何引入Angular组件详解
2018/08/09 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
如何使用python爬取csdn博客访问量
2016/02/14 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
python调用摄像头的示例代码
2020/09/28 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
AJAX都有哪些有点和缺点
2012/11/03 面试题
战略合作协议书范本
2014/04/18 职场文书
比赛主持人开场白
2015/05/29 职场文书
庆七一主持词
2015/06/29 职场文书
百年校庆感言
2015/08/01 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL
Golang gRPC HTTP协议转换示例
2022/06/16 Golang