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扩展php_curl.dll不加载的解决方法
Jun 26 PHP
利用PHP实现短域名互转
Jul 05 PHP
PHP curl实现抓取302跳转后页面的示例
Jul 04 PHP
PHP SESSION的增加、删除、修改、查看操作
Mar 20 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
PHP调试及性能分析工具Xdebug详解
Feb 09 PHP
php实现产品加入购物车功能(1)
Jul 23 PHP
php实现多维数组排序的方法示例
Mar 23 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
PHP+Redis开发的书签案例实战详解
Jul 09 PHP
thinkphp5实现微信扫码支付
Dec 23 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
浅谈php使用curl模拟多线程发送请求
2019/03/08 PHP
用于table内容排序
2006/07/21 Javascript
JS小框架 fly javascript framework
2009/11/26 Javascript
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
2013/10/15 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
小程序云开发实战小结
2018/10/25 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
公务员个人自我评价分享
2013/11/06 职场文书
心得体会范文
2014/01/04 职场文书
《赶海》教学反思
2014/04/20 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
初三英语教学计划
2015/01/23 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
 Python 中 logging 模块使用详情
2022/03/03 Python
Python OpenCV实现图形检测示例详解
2022/04/08 Python