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实现mysql数据库备份类
Mar 20 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
解析左右值无限分类的实现算法
Jun 20 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
php生成百度sitemap站点地图类函数实例
Oct 17 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
JavaScript与HTML结合的基本使用方法整理
Oct 12 PHP
php使用curl并发减少后端访问时间的方法分析
May 12 PHP
PHP处理数组和XML之间的互相转换
Jun 02 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 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 daddslashes 使用方法介绍
2012/10/26 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
实现PHP搜索加分页
2016/10/12 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
javascript实现评分功能
2020/06/24 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
python+django+rest框架配置创建方法
2019/08/31 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
大学生就业策划书范文
2014/04/04 职场文书
2014法制宣传日活动总结
2014/07/09 职场文书
最美家庭活动方案
2014/08/31 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
党员证明信
2015/06/19 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
Python pygame实现中国象棋单机版源码
2021/06/20 Python