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 相关文章推荐
一个高ai的分页函数和一个url函数
Oct 09 PHP
PHP 输出简单动态WAP页面
Jun 09 PHP
php 面试碰到过的问题 在此做下记录
Jun 09 PHP
php中current、next与reset函数用法实例
Nov 17 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
php取出数组单个值的方法
Mar 12 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 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
Thinkphp中Create方法深入探究
2014/06/16 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
python实现代理服务功能实例
2013/11/15 Python
python解析模块(ConfigParser)使用方法
2013/12/10 Python
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
用Python进行行为驱动开发的入门教程
2015/04/23 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
想学python 这5本书籍你必看!
2018/12/11 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
老公给老婆的保证书
2014/04/28 职场文书
代理人委托书
2014/08/01 职场文书
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript