用php切割大图片为成规则的小图
将根据xml配置,将合并后的大图切割成一系列小图
<?php
/**
* 将大图片按照配置切割成一定比例的小图片
* 并按照一定规则给小图片命名
*
* 使用方法:
*根据guardians/g1目录下的Attack_1.xml配置切割Attack_1.png
*也可批量切割(我写的是批量切割)
*
* 注:需要GD2支持
*/
// echo "{${phpinfo()}}";
header("Cache-Control:no-cache,must-revalidate"); //不使用缓存 for ($i=1; $i < 100; $i++) {
$filename="guardians/g".$i."/Attack_1.png";//大图文件
$tempdir="temp";//小图存放目录
//判断文件是否存在 不存在就切割完毕
if(file_exists($filename)){
if(!file_exists($tempdir)) mkdir($tempdir);
}
$xml=simplexml_load_file("guardians/g".$i."/Attack_1.xml");
echo "guardians/g".$i."/Attack_1.xml<br>";
$j = 1;
foreach($xml -> SubTexture as $SubTexture){
$attri = $SubTexture->attributes();
$picW=$attri->frameWidth; //切割小图的宽
$picH=$attri->frameHeight;
//为支持大图片增加内存限制
ini_set( 'memory_limit', '220M' ); //切割小图的高
echo $picW.",".$picH."<br>";
list($width, $height, $type, $attr) = getimagesize($filename); $image = imagecreatefrompng($filename);
//透明背景
$im = imagecreatetruecolor((int)$picW, (int)$picH) or die("Cannot Initialize new GD image stream");//创建小图像
imagealphablending($im, false);
imagesavealpha($im, true);
$white = imagecolorallocatealpha($im,255,255,255,127);
imagefill($im,0,0,$white); $picX=$attri->width;//获取截取图片的宽度
$picY=$attri->height;//获取截取图片的高度
echo $picX.",".$picY."<br>";
$frameX = $attri->frameX;
$frameY = $attri->frameY;
$x = $attri->x;
$y = $attri->y; echo $frameX.",".$picY."<br>";
imagecopy ( $im, $image, -(int)$frameX, -(int)$frameY, (int)$x, (int)$y, (int)$picX, (int)$picY );//拷贝大图片的一部分到小图片
imagepng($im,$tempdir."/g".$i."_Attack_1_".$j.".png",0, 75);//创建小图片到磁盘,输出质量为75(0~100)
echo $tempdir."/g".$i."_Attack_1_".$j.".png". "<br>";
$j = $j + 1;
imagedestroy($im);//释放与 $im 关联的内存
imagedestroy($image);//释放与 $image 关联的内存 }
} echo " complate";
?>
完成后会在temp目录下生成小图,确保temp目录是要写的权限
用php切割大图片为成规则的小图的更多相关文章
- Android大图片之缩略图,以及对原图依照指定宽高裁剪成缩略图
<Android大图片之变换缩略图,以及对原始大图片依照指定宽.高裁剪成缩略图> 在Android的ImageView载入图像资源过程中,出于性能和内存开销的须要.有时候须要把一个原 ...
- python智能图片识别系统(图片切割、图片识别、区别标识)
@ 目录 技术介绍 运行效果 关键代码 写在最后 技术介绍 你好! python flask图片识别系统使用到的技术有:图片背景切割.图片格式转换(pdf转png).图片模板匹配.图片区别标识. 运行 ...
- HTML5将图片转化成字符画
HTML5将图片转化成字符画 字符画大家一定非常熟悉了,那么如何把一张现有的图片转成字符画呢?HTML5让这个可能变成了现实,通过canvas,可以很轻松实现这个功能.其实原理很简单:扫描图片相应位置 ...
- Android相机使用(系统相机、自定义相机、大图片处理)
本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理(避免OOM),还有简要提一下有些人Surf ...
- Android大图片裁剪终极解决方案(上:原理分析)
转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) http://my.oschina.net/ryanhoo/blog/86842 约几个月前,我正 ...
- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
在网站开发过程中,对于页面的加载效率一般都想尽办法求快.那么,怎么让才能更快呢?减少页面请求 是一个优化页面加载速度很好的方法.上一篇博文我们讲解了 “利用将小图标合成一张背景图来减少HTTP请求”, ...
- 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果
去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟 ...
- Android大图片裁剪终极解决方案 原理分析
约几个月前,我正为公司的APP在Android手机上实现拍照截图而烦恼不已. 上网搜索,确实有不少的例子,大多都是抄来抄去,而且水平多半处于demo的样子,可以用来讲解知识点,但是一碰到实际项目,就漏 ...
- [转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时, ...
随机推荐
- Android Training精要(一)ActionBar上级菜单导航图标
Navigation Up(ActionBar中的上级菜单导航图标) 在android 4.0中,我们需要自己维护activity之间的父子关系. 导航图标ID为android.R.id.home @ ...
- git使用的常见命令(一)
.查看当前有哪些branch git branch 其中有*选中的分支是你的当前使用的分支 .新建一个分支 git branch dev_xiaoming .切换到一个分支 git checkout ...
- 【HDOJ】1239 Calling Extraterrestrial Intelligence Again
这题wa了很多词,题目本身很简单,把a/b搞反了,半天才检查出来. #include <stdio.h> #include <string.h> #include <ma ...
- MySQL源码 information_schema新增表
information_schema是MySQL下的DB, 存储了数据库的数据字典,但OS系统上,并没有information_schema下表的数据和结构文件. 所以,MySQL在针对informa ...
- bzoj2434
利用了bzoj3172提到的性质,x串在y串中的出现的次数即为在fail树上以x结尾节点为根的子树中有多少个节点在y串上所以很明显我们要离线解决,我们先把询问按y分类存起来然后我们顺着操作顺序来,出现 ...
- (转载)mysql分屏显示结果
(转载)http://blog.csdn.net/wylkeke/article/details/7280645 linux机器: 在mysql命令行输入pager more就可以分屏显示结果了,取消 ...
- 我的第一篇Markdown博客
我的第一篇Markdown博客 这是我第一次用Markdown写博客,发现还是比较好用的,加上Marsedit也支持了Markdown的博客预览,博客园也加了Markdown的格式支持,就更加方便了, ...
- 各种工具使得数据分析工作使用python变得越来越流行
请参看文章:http://strata.oreilly.com/2013/03/python-data-tools-just-keep-getting-better.html
- Bzoj 3339: Rmq Problem && Bzoj 3585: mex 莫队,树状数组,二分
3339: Rmq Problem Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 833 Solved: 397[Submit][Status][D ...
- C语言snprintf函数
int snprintf(char *restrict buf, size_t n, const char * restrict format, ...); 函数说明:最多从源串中拷贝n-1个字符到 ...