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 相关文章推荐
增加反向链接的101个方法 站长推荐
Jan 31 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
May 03 PHP
实用函数10
Nov 08 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
Nov 07 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
php绘制一条弧线的方法
Jan 24 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
Sep 03 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类中private属性继承问题分析
2012/11/01 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
javascript的push使用指南
2014/12/05 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
利用python批量检查网站的可用性
2016/09/09 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
python url 参数修改方法
2018/12/26 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
Python实现数值积分方式
2019/11/20 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
python打包生成so文件的实现
2020/10/30 Python
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
英语专业毕业生自荐信
2013/10/28 职场文书
学校岗位设置方案
2014/01/16 职场文书
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
张丽莉观后感
2015/06/16 职场文书