ImageFilter per creare sprite CSS
-
30-09-2019 - |
Domanda
Mi piacerebbe automatizzare la creazione di immagini per sprite CSS.
Il mio obiettivo è quello di convertire un colore delle miniature in bianco e nero e si fondono in una sola immagine con un solo colore sulla parte superiore e nero nella parte inferiore).
Ecco quello che ho finora:
<?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);
?>
Soluzione
<?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);
?>
Altri suggerimenti
Ho trovato un bug ($ image1 dovrebbe essere $ 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);
?>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow