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 相关文章推荐
Access数据库导入Mysql的方法之一
Oct 09 PHP
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
Aug 21 PHP
PHP实现下载功能的代码
Sep 29 PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
ThinkPHP模板比较标签用法详解
Jun 30 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
ThinkPHP提交表单时默认自动转义的解决方法
Nov 25 PHP
php操作xml入门之cdata区段
Jan 23 PHP
php中执行系统命令的方法
Mar 21 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
php仿微信红包分配算法的实现方法
May 13 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分页函数示例代码分享
2014/02/24 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
Jquery ui css framework
2010/06/28 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
jquery用data方法获取某个元素上的事件
2014/06/23 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
原生js实现轮播图
2017/02/27 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
python访问sqlserver示例
2014/02/10 Python
Python中import机制详解
2017/11/14 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
python实现3D地图可视化
2020/03/25 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
英语专业个人求职自荐信
2013/09/21 职场文书
团员学习总结的自我评价范文
2013/10/14 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
Python3 类型标注支持操作
2021/06/02 Python
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python