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. 我的output目录下是,我放的是手动修改成文件名有序的文件,故code中没有文件名排序部分,图片是从Flash cs6中编辑fla"导出Sprite"获取到的。
以上是关于PHP 简易读取文件目录下的文件,生成css spirte图片的主要内容,如果未能解决你的问题,请参考以下文章