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的面向对象编程
Oct 09 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
php防注入及开发安全详细解析
Aug 09 PHP
php中call_user_func函数使用注意事项
Nov 21 PHP
php将文本文件转换csv输出的方法
Dec 31 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
PHP文件缓存类实现代码
Oct 26 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
Apr 15 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
Sep 29 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
Oct 08 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
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
2018/01/13 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
详解python之配置日志的几种方式
2017/05/22 Python
git进行版本控制心得详谈
2017/12/10 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
Python3如何判断三角形的类型
2020/04/12 Python
Python错误的处理方法
2020/06/23 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
几个Shell Script面试题
2014/04/18 面试题
大学生职业规划范文:象牙塔生活的四年计划
2014/01/14 职场文书
品质主管岗位职责
2014/03/16 职场文书
卫校毕业生个人自我鉴定
2014/04/28 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
2016国庆促销广告语
2016/01/28 职场文书
JS代码编译器Monaco使用方法
2021/06/11 Javascript
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL