سؤال

أرغب في أتمتة إنشاء صور لـ CSS Sprites.

هدفي هو تحويل صورة مصغرة ملونة إلى أبيض وأسود ودمجها في صورة واحدة بلون في الأعلى والأسود في الأسفل).

هذا ما لدي حتى الآن:

<?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);
?>
هل كانت مفيدة؟

المحلول

<?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);
?>

نصائح أخرى

لقد وجدت خطأ (يجب أن يكون $ image1 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);
?>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top