PHP 简易读取文件目录下的文件,生成css spirte图片

摘要:
因为我不熟悉PS,也不知道如何在PS中生成水平排序的精灵图像。使用“cssspriteV4.3”版本,生成的图像将压缩图像的大小。我想修改原作者开发的程序,但我不知道C#,所以我不得不使用PHPgd库来生成csssvirtual图像。php2header;3$path=“输出”;//建议将需要生成csssvirtual的所有图像放在此文件目录45//循环源文件目录6$handle=opendir;7$files=array();8//读取源目录下的所有文件9while(false!--2016-03-13更新并处理了剪切图片部分,剪切部分涉及:PHP图片剪切和缩放/无损剪切图片PHP剪切缩略图以生成png、gif透明图片、黑色背景相关问题

因为个人不是对PS熟悉,不清楚如何在PS中生成一张横向有序的spirte图片,使用了"css sprite V4.3"版本,生成的图片会出现压缩图片大小的情况,本想修改原作者开发的程序,但是不懂C#,只好使用PHP gd库进行生成css spirte图片。

 1 <?php
 2 header("Content-type: image/png");
 3 $path = "output";//建议这个文件目录下放入所有需要生成css spirte的图片
 4 
 5 //循环源文件目录
 6 $handle = opendir($path);
 7 $files = array();
 8 //读入源目录下的所有文件
 9 while(false !== ($file = readdir($handle))) {
10     if ($file != '.' && $file != '..') {
11         $filename = $path . "/"  . $file;
12         if(is_file($filename)) {
13             //$files[] = $filename;
14             $files[] = str_replace(".png","",$file);
15         }else {
16             //$files = array_merge($files, get_files($filename));
17             //$files = array_merge($files, str_replace(".png","",$file));
18         }
19     }
20 }   //  end while
21 closedir($handle);
22 
23 sort($files);
24 
25 //图片裁剪
26 // 缩略后的大小
27 /*$xx = 79;
28 $yy = 214;
29 foreach($files as $key=>$value){
30     //var_dump(getimagesize($value));
31     $src = $path.'/' . $value.'.png';
32     list($src_w,$src_h)=getimagesize($src);
33     $img = imagecreatefrompng($src);
34     imagesavealpha($img,true);
35     //很重要;
36     $newImg = imagecreatetruecolor($xx ,$yy);
37     imagealphablending($newImg,false);
38     //很重要,意思是不合并颜色,直接用$img图像颜色替换,包括透明色;
39     imagesavealpha($newImg,true);
40       //很重要,意思是不要丢了$newImg图像的透明色;
41     imagecopy($newImg,$img,0,0,0,0,$src_w,$src_h);
42     imagepng($newImg,$path.'/test/'.$value.'.png');
43     //imagedestroy($newImg);
44 
45 }
46 exit();*/
47 
48 foreach($files as $key=>&$value){
49     //var_dump(getimagesize($value));
50     $value = $path.'/' . $value.'.png';
51 }
52 unset($value);
53 $bgImageSize = 0; //透明背景的宽度
54 $bgImageHeight = 0; //透明底的高度
55 foreach($files as $key=>$value){
56     //var_dump(getimagesize($value));
57     $source[$key]['source'] = imagecreatefrompng($value);
58     $source[$key]['size']   = getimagesize($value);
59     $imageInfo                = $source[$key]['size'];
60     $bgImageSize             +=  $imageInfo[0];
61     if($imageInfo[1] > $bgImageHeight){
62         $bgImageHeight         = $imageInfo[1];
63     }
64 }
65 
66 
67 $img = imagecreatetruecolor($bgImageSize, $bgImageHeight);
68 imagesavealpha($img,true);
69 imagealphablending($img,false);//这里很重要,意思是不合并颜色,直接用$img图像颜色替换,包括透明色;
70 imagesavealpha($img,true);//这里很重要,意思是不要丢了$thumb图像的透明色;
71 
72 $source = array();
73 
74 foreach($files as $key=>$value){
75     //var_dump(getimagesize($value));
76     $source[$key]['source'] = imagecreatefrompng($value);
77     $source[$key]['size'] = getimagesize($value);
78 }
79 
80 $dst_y = 0; //图片之间的间距
81 
82 foreach($source as $key=>$value){
83     //bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
84     $sourceInfo     =  $source[$key]['size'];
85     $dst_x             =  $key * $sourceInfo[0];
86     imagecopy($img, $source[$key]['source'], $dst_x, $dst_y, 0, 0, $sourceInfo[0], $sourceInfo[1]);
87 }
88 //定为文件名
89 $date = date("ymd_His").'_'.mt_rand(0,10);
90 imagepng($img,'image'.$date.'.png');
91 imagedestroy($img);

随笔参考

  1. 解决PHP剪切缩略图生成png,gif透明图时,黑色背景问题

  2. PHP遍历文件的4种方法

注:

1. 我的output目录下是,我放的是手动修改成文件名有序的文件,故code中没有文件名排序部分,图片是从Flash cs6中编辑fla"导出Sprite"获取到的。

PHP 简易读取文件目录下的文件,生成css spirte图片第1张

----2016-03-13 更新

处理了剪切图片部分,剪切部分参考了:

  1. PHP图片裁剪与缩放 / 无损裁剪图片
  2. PHP剪切缩略图生成png,gif透明图时,黑色背景有关问题

免责声明:文章转载自《PHP 简易读取文件目录下的文件,生成css spirte图片》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JAVA基础4---序列化和反序列化深入整理(JDK序列化)SpringCloud系列之配置中心(Config)使用说明下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Kali学习笔记40:SQL手工注入(2)

上一篇讲到可以通过注入得到数据库中所有的表信息 而SQL注入能不能做数据库之外的事情呢? 读取文件: ' union select null,load_file('/etc/passwd') -- 为了方便进行测试,后边我使用Burpsuite 既然可以读取文件了,那么也就可以写文件:比如经典的PHP一句话 ' union select null,"&l...

Linux项目部署

Linux 项目部署 Chmod 777 绝对路径  ——  修改文件夹权限 Linux 上传下载文件 rz  上传文件    在shell终端仿真器中输入命令  即可从弹出的对话框中选择本地磁盘上的文件,利用Zmodem上传到服务器当前路径下。 sz 下载文件 在shell终端仿真器中输入命令 即可利用Zmodem将文件下载到本地某目录下。 下载的文件...

(转)了解一下,各种图片格式的区别

  在开发过程中,经常涉及到要用到图片,但是图片有很多不同的格式,他们之间有什么区别呢,我们在使用的时候又该如何选择呢?本文介绍和比较几种常见图片文件格式的优缺点,并介绍不同的文件格式对应用程序性能的影响。 有损vs无损 图片文件格式有可能会对图片的文件大小进行不同程度的压缩,图片的压缩分为有损压缩和无损压缩两种。 有损压缩:指在压缩文件大小的过程中,损...

makefile中的自动化变量 【转】

转自:http://blog.chinaunix.net/uid-28458801-id-3495215.html 自动化变量 模式规则中,规则的目标和依赖文件名代表了一类文件名;规则的命令是对所有这一类文件重建过程的描述,显然,在命令中不能出现具体的文件名,否则模式规则失去意义。那么在模式规则的命令行中该如何表示文件,将是本小节的讨论的重点。 假如你需要...

linux安装zlib拓展

如果缺少zlib,则先安装zlib拓展, 1.进入目录cd /usr/local/php-7.3.29/ext/zlib/2.复制为config.m4 文件cp config0.m4 config.m43.运行phpize /usr/local/php/bin/phpize 4.运行 ./configure --with-php-config=/...

linux用户,用户组,文件权限

一: 1) 新建用户natasha,uid为1000,gid为555,备注信息为“master” 2) 修改natasha用户的家目录为/Natasha 3) 查看用户信息配置文件的最后一行 4) 为natasha用户设置密码“123” 5) 查看用户密码配置文件的最后一行 6) 将natasha用户账户锁定 7) 将natasha用户账户解锁 8) 新建...