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

Posted wakasann

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 简易读取文件目录下的文件,生成css spirte图片相关的知识,希望对你有一定的参考价值。

因为个人不是对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         }else {
15             $files = array_merge($files, get_files($filename));
16         }
17     }
18 }   //  end while
19 closedir($handle);
20 
21 $bgImageSize = 0; //透明背景的宽度
22 $bgImageHeight = 0; //透明底的高度
23 foreach($files as $key=>$value){
24     //var_dump(getimagesize($value));
25     $source[$key][‘source‘] = imagecreatefrompng($value);
26     $source[$key][‘size‘]   = getimagesize($value);
27     $imageInfo                = $source[$key][‘size‘];
28     $bgImageSize             +=  $imageInfo[0];
29     if($imageInfo[1] > $bgImageHeight){
30         $bgImageHeight         = $imageInfo[1];
31     }
32 }
33 
34 $img = imagecreatetruecolor($bgImageSize, $bgImageHeight); 
35 imagesavealpha($img,true);
36 $color=imagecolorallocate($img,255,255,255);
37 imagealphablending($img,false);//这里很重要,意思是不合并颜色,直接用$img图像颜色替换,包括透明色;  
38 imagesavealpha($img,true);//这里很重要,意思是不要丢了$thumb图像的透明色;  
39 
40 $source = array();
41 
42 foreach($files as $key=>$value){
43     //var_dump(getimagesize($value));
44     $source[$key][‘source‘] = imagecreatefrompng($value);
45     $source[$key][‘size‘] = getimagesize($value);
46 }
47 
48 $dst_y = 0; //图片之间的间距
49 
50 foreach($source as $key=>$value){
51     //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 )
52     $sourceInfo     =  $source[$key][‘size‘];
53     $dst_x             =  $key * $sourceInfo[0];
54     imagecopy($img, $source[$key][‘source‘], $dst_x, $dst_y, 0, 0, $sourceInfo[0], $sourceInfo[1]);
55 }
56 //定为文件名
57 $date = date("ymd_His").‘_‘.mt_rand(0,10);
58 imagepng($img,‘image‘.$date.‘.png‘);
59 imagedestroy($img);

随笔参考了

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

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

注:

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

技术分享

 

以上是关于PHP 简易读取文件目录下的文件,生成css spirte图片的主要内容,如果未能解决你的问题,请参考以下文章

在php中, 如何动态读取目录文件夹下的图片?

PHP读取目录下所有文件

PHP 简易文件下载页

php读取目录下的所有文件

tp5模板中怎么读取配置

一个简易的PHP读取CSV文件的方法