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 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
PHP验证码类代码( 最新修改,完全定制化! )
Dec 02 PHP
php获取数组中重复数据的两种方法
Jun 28 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
php实现获取文件mime类型的方法
Feb 11 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
Sep 30 PHP
php防止网站被攻击的应急代码
Oct 21 PHP
PHP面向对象程序设计OOP继承用法入门示例
Dec 27 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
PHP进阶学习之反射基本概念与用法分析
Jun 18 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 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 adodb操作mysql数据库
2009/03/19 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
javascript计时器详解
2015/02/28 Javascript
js获取url传值的方法
2015/12/18 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
python能自学吗
2020/06/18 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
竞选副班长演讲稿
2014/04/24 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
成绩单评语
2015/01/04 职场文书
2015年商场工作总结
2015/04/27 职场文书
总经理年会致辞
2015/07/29 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python