//用PHP批量生成图片缩略图

function mkdirs($dirname,$mode=0777)

//创建目录(目录, [模式])

{

if(!is_dir($dirname))

{

mkdirs($dirname,$mode); //如果目录不存在,递归建立

return mkdir($dirname,$mode);

}

return true;

}

function savefile($filename,$content='')

//保存文件(文件, [内容])

{

if(function_exists(file_put_contents))

{

file_put_contents($filename,$content);

}

else

{

$fp=fopen($filename,"wb");

fwrite($fp,$content);

fclose($fp);

}

}

function getsuffix($filename) //获取文件名后缀

{

return end(explode(".",$filename));

}

function checksuffix($filename,$arr) //是否为允许类型(当前, 允许)

{

if(!is_array($arr))

{

$arr=explode(",",str_replace(" ","",$arr));

}

return in_array($filename,$arr) ? 1 : 0;

}

class image

{

var $src; //源地址

var $newsrc; //新图路径(本地化后)

var $allowtype=array(".gif",".jpg",".png",".jpeg"); //允许的图片类型

var $regif=0; //是否缩略GIF, 为0不处理

var $keep=0; //是否保留源文件(1为保留, 0为MD5)

var $over=0; //是否可以覆盖已存在的图片,为0则不可覆盖

var $dir; //图片源目录

var $newdir; //处理后的目录

function __construct($olddir=null,$newdir=null)

{

$this->dir=$olddir ? $olddir : "./images/temp";

$this->newdir=$newdir ? $newdir : "./images/s";

}

function reNames($src)

{

$md5file=substr(md5($src),10,10).strrchr($src,".");

//MD5文件名后(例如:3293okoe.gif)

$md5file=$this->w."_".$this->h."_".$md5file;

//处理后文件名

return $this->newdir."/".$md5file;

//将源图片,MD5文件名后保存到新的目录里

}

function Mini($src,$w,$h,$q=80)

//生成缩略图 Mini(图片地址, 宽度, 高度, 质量)

{

$this->src=$src;

$this->w=$w;

$this->h=$h;

if(strrchr($src,".")==".gif" && $this->regif==0)

//是否处理GIF图

{

return $this->src;

}

if($this->keep==0) //是否保留源文件,默认不保留

{

$newsrc=$this->reNames($src); //改名后的文件地址

}

else //保持原名

{

$src=str_replace("\\","/",$src);

$newsrc=$this->newdir.strrchr($src,"/");

}

if(file_exists($newsrc) && $this->over==0)

//如果已存在,直接返回地址

{

return $newsrc;

}

if(strstr($src,"http://") && !strstr($src,$_SERVER['HTTP_HOST']))

//如果是网络文件,先保存

{

$src=$this->getimg($src);

}

$arr=getimagesize($src); //获取图片属性

$width=$arr[0];

$height=$arr[1];

$type=$arr[2];

switch($type)

{

case 1: //1 = GIF,

$im=imagecreatefromgif($src);

break;

case 2: //2 = JPG

$im=imagecreatefromjpeg($src);

break;

case 3: //3 = PNG

$im=imagecreatefrompng($src);

break;

default:

return 0;

}

//处理缩略图

$nim=imagecreatetruecolor($w,$h);

$k1=round($h/$w,2);

$k2=round($height/$width,2);

if($k1

{

$width_a=$width;

$height_a=round($width*$k1);

$sw=0;

$sh=($height-$height_a)/2;

}

else

{

$width_a=$height/$k1;

$height_a=$height;

$sw=($width-$width_a)/2;

$sh = 0;

}

//生成图片

if(function_exists(imagecopyresampled))

{

imagecopyresampled($nim,$im,0,0,$sw,$sh,$w,$h,$width_a,$height_a);

}

else

{

imagecopyresized($nim,$im,0,0,$sw,$sh,$w,$h,$width_a,$height_a);

}

if(!is_dir($this->newdir))

{

mkdir($this->newdir);

}

switch($type) //保存图片

{

case 1:

$rs=imagegif($nim,$newsrc);

break;

case 2:

$rs=imagejpeg($nim,$newsrc,$q);

break;

case 3:

$rs=imagepng($nim,$newsrc);

break;

default:

return 0;

}

return $newsrc; //返回处理后路径

}

function getimg($filename)

{

$md5file=$this->dir."/".substr(md5($filename),10,10).strrchr($filename,".");

if(file_exists($md5file))

{

return $md5file;

}

//开始获取文件,并返回新路径

$img=file_get_contents($filename);

if($img)

{

if(!is_dir($this->dir))

{

mkdir($this->dir);

}

savefile($md5file,$img);

return $md5file;

}

}

function reImg($src,$w,$h,$q)

//转换缩略图(文件名和结构不变)

{

$this->keep=1;

return $this->Mini($src,$w,$h,$q);

//return 生成的地址

}

}

$image=new image();

echo $image->reImg("images/zht.jpg",75,75,80);

echo "
";

echo $image->reImg("images/m8920.jpg",75,75,80);

echo "
";

echo $image->getimg("./images/s/zht.jpg");

?>

php 生成缩略图保存,PHP批量生成图片缩略图的方法相关推荐

  1. php图片生成缩略图_PHP实现生成图片缩略图函数

    本文主要和大家介绍了PHP基于GD库实现的生成图片缩略图函数,涉及php针对图片属性相关操作技巧,需要的朋友可以参考下,希望能帮助到大家. /** * 生成缩略图函数(支持图片格式:gif.jpeg. ...

  2. php 缩略图生成类,php生成图片缩略图类

    /** * @abstract 生成图片的缩略图,可以指定任意尺寸,生成的图片为png格式 * @example * $file = 'test.png'; * $th =new Thumbnail( ...

  3. php图片生成缩略图_PHP生成图片缩略图类示例

    本文实例讲述了PHP生成图片缩略图类.分享给大家供大家参考,具体如下: class App_image_helper { protected $imgFileName; protected $imgW ...

  4. JAVA生成图片缩略图、JAVA截取图片局部内容

    目前,google已经有了更好的处理JAVA图片的工具,请搜索:Thumbnailator package com.ares.image.test;import java.awt.Color; imp ...

  5. java 图片处理 图片缩略图,java怎么生成图片缩略图,缩小图片,高清图片缩小

    java如何生成图片缩略图,缩小图片,高清图片缩小 可以把图片缩小到理想的倍数,也可以根据自己的需要来具体规定图片转化后的大小 对于类型为jpg的图片来说,只需要三个参数就能转化得到自己想要的图片 参 ...

  6. (转)PHP生成图片缩略图

    注:此功能依赖GD2图形库 最近要用php生成缩略图,在网上找了一下,发现了这篇文章:PHP生成图片缩略图 试用了一下后,发现有这样几个问题: 1.png图片生成的缩略图是jpg格式的 2.png图片 ...

  7. C# 生成图片缩略图

    最近项目有部分需求,是关于图片操作部分的, 大致的功能就是图片的保存和展示.但是直接操作原图,程序运行效率太慢.而且如果传输数据量过大的话,可能直接导致调用WCF服务失败的问题. 为了解决这个问题,决 ...

  8. IOS平台生成图片缩略图的两种方案

    2013-04-16 15:48 2574人阅读 评论(0) 收藏 举报 IOS平台生成图片缩略图的两种方案 只写出关键部分,其它部分自己添加既可 1.自动缩放到指定大小 + (UIImage *)t ...

  9. python批量生成图片_python图像处理-批量生成纯色图片

    前言 本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑.如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过. 上一 ...

最新文章

  1. mqtt android简书,iOS MQTT协议笔记
  2. linux 脚本 ,shell中的与
  3. HBase参数配置及说明
  4. 谷歌最新财报:平均每天入账5个亿,还是不及预期;皮猜:未来靠云+AI
  5. 网易考拉没有了,网易严选还会远吗?
  6. 创新式开发探索(一) —— 开篇
  7. geoserver的api接口_geoserver REST使用
  8. 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理
  9. 《网页设计与前端开发 Dreamweaver+Flash+Photoshop+HTML+CSS+JavaScript 从入门到精通》—— 第1章 网页设计基础知识...
  10. 【AD】Altium designer pcb 交叉选择模式
  11. C++ 运算符重载的原理
  12. java mvc页面传值方式_详解SpringMVC的ModelAndView传值方法
  13. 除了云原生,2021 年还有这八大趋势值得关注
  14. 7.性能之巅 洞悉系统、企业与云计算 --- 内存
  15. mysql 雷同数值连续出现次数_MySql中关于某列中相同数值连续出现次数的统计
  16. python分行政区域汇总_python:编写行政区域三级菜单(day 1)
  17. CODESYS官方教程“您的第一个CODESYS程序”的一些注解
  18. revit2016对应lumion版本_revit如何导入lumion?revit文件转化成lumion文件有诀窍!
  19. windows 错误代码2
  20. Python——枚举(enum)

热门文章

  1. java sleep 循环_while循环中的Thread.sleep()
  2. c语言用于提示的指令,C语言指令、符号表.doc
  3. 如何踩中下一个技术节拍
  4. 使用ZeroTier搭建大局域网利用VNC远程桌面
  5. #if、#if defined 的使用
  6. poj 1904 King's Quest 强连通分量+匹配
  7. PHP文件上传 (以上传txt文件为例)
  8. IOS中扩展机制Category和associative
  9. oracle 11g 如何实现坏块检查、恢复?
  10. 17日直播预告丨Oracle 19c避雷经验分享