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 Token(令牌)设计
Mar 15 PHP
ionCube 一款类似zend的PHP加密/解密工具
Jul 25 PHP
PHP在特殊字符前加斜杠的实现代码
Jul 17 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
Dec 25 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
May 15 PHP
Codeigniter实现发送带附件的邮件
Mar 19 PHP
PHP接收json 并将接收数据插入数据库的实现代码
Dec 01 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 PHP
laravel开发环境homestead搭建过程详解
Jul 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
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
php array的学习笔记
2012/05/16 PHP
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
使用JavaScript 实现各种跨域的方法
2013/05/08 Javascript
Node.js文件操作详解
2014/08/16 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
Python贪心算法实例小结
2018/04/22 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
python银行系统实现源码
2019/10/25 Python
python中怎么表示空值
2020/06/19 Python
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
开朗女孩的自我评价
2014/02/10 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
法院授权委托书格式
2014/09/28 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2014年实习期工作总结
2014/11/27 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
结婚主持人致辞
2015/07/28 职场文书
四则混合运算教学反思
2016/02/23 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android