2011-01-06 98 views
0

我想自动创建CSS精灵的图像。imagefilter创建CSS精灵

我的目标是将彩色缩略图转换成黑白色,并将其合并为一个图像,顶部颜色为黑色,底部为黑色。

这是我到目前为止有:

<?php 
$image = imagecreatefrompng('test.png'); 

if($image && imagefilter($image , IMG_FILTER_GRAYSCALE)) 
{ 
    echo 'Image converted.'; 

    imagepng($image, 'test.png'); 
} 
else 
{ 
    echo 'Conversion failed.'; 
} 

imagedestroy($image); 
?> 
+0

什么你当通过指 “合并”。这是一个叠加的混合,或者这就像使图像的顶部是彩色版本,而下半部分是黑色和白色版本。更多细节? – dqhendricks 2011-01-06 20:41:31

+0

我想'合并'图像由颜色(上)和黑与白(下)组成。 – Eeyore 2011-01-06 20:56:19

回答

3
<?php 
$image_path = 'test.png'; 
$input_image = imagecreatefrompng($image_path); 
$image_info = getimagesize($image_path); 
$output_image = imagecreatetruecolor($image_info[0], $image_info[1] * 2); 
imagecopy ($output_image, $input_image, 0, 0, 0, 0, $image_info[0], $image_info[1]); 
if(imagefilter($input_image, IMG_FILTER_GRAYSCALE)) { 
    echo 'Image converted.'; 
    imagecopy ($output_image, $input_image, 0, $image_info[1], 0, 0, $image_info[0], $image_info[1]); 
    imagepng($output_image, 'test.png'); 
} else { 
    echo 'Conversion failed.'; 
} 
imagedestroy($input_image); 
imagedestroy($output_image); 
?> 
+0

将创建原始高度两倍的新图像,然后将颜色版本复制到顶部,并将灰度版本复制到底部,然后使用新图像重新覆盖原始图像文件。 – dqhendricks 2011-01-06 20:59:26

0

我发现了一个bug($此搜索应该是$ output_image)

<?php 
$image_path = 'test.png'; 
$input_image = imagecreatefrompng($image_path); 
$image_info = getimagesize($image_path); 
$output_image = imagecreatetruecolor($image_info[0], $image_info[1] * 2); 
imagecopy ($output_image, $input_image, 0, 0, 0, 0, $image_info[0], $image_info[1]); 
if($output_image && imagefilter($output_image , IMG_FILTER_GRAYSCALE)) { 
    echo 'Image converted.'; 
    imagecopy ($output_image, $input_image, 0, $image_info[1], 0, 0, $image_info[0], $image_info[1]); 
    imagepng($output_image, 'test.png'); 
} else { 
    echo 'Conversion failed.'; 
} 
imagedestroy($input_image); 
imagedestroy($output_image); 
?>