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实现让页面只能被百度gogole蜘蛛访问的方法
Dec 29 PHP
PHP开发中的错误收集,不定期更新。
Feb 03 PHP
apache+php完美解决301重定向的两种方法
Jun 08 PHP
PHP判断远程url是否有效的几种方法小结
Oct 08 PHP
PHP 通过Socket收发十六进制数据的实现代码
Aug 16 PHP
php相对当前文件include其它文件的方法
Mar 13 PHP
如何使用纯PHP实现定时器任务(Timer)
Jul 31 PHP
php实现smarty模板无限极分类的方法
Dec 07 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
thinkPHP实现MemCache分布式缓存功能
Mar 23 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
php curl操作API接口类完整示例
May 21 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
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
农历与西历对照
2006/09/06 Javascript
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
与Math.pow 相反的函数使用介绍
2014/08/04 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
node上的redis调用优化示例详解
2018/10/30 Javascript
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
Python中with及contextlib的用法详解
2017/06/08 Python
安装Python的教程-Windows
2017/07/22 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
5款实用的python 工具推荐
2020/10/13 Python
python 解决函数返回return的问题
2020/12/05 Python
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
好邻里事迹材料
2014/01/16 职场文书
银行存款证明样本
2014/01/17 职场文书
交通安全教育制度
2014/02/02 职场文书
普通话演讲稿
2014/09/03 职场文书
铁人观后感
2015/06/16 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
祝酒词范文
2015/08/12 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书