2013-12-07 5 views
3

У меня есть сценарий, который изменяет размер загруженных изображений. Я добавил некоторые инструкции для преобразования прозрачности в GIF в белый. Обычно он работает нормально, но в некоторых случаях измененный размер GIF полностью черный. (Обратите внимание, что я использую эти изображения для PDF-файлов, поэтому я не могу использовать CSS, чтобы справиться с этим ...). Во всяком случае, я новичок, когда дело доходит до манипуляции с изображениями PHP, поэтому я не уверен, как это исправить.Изменение размера изображений GIF на черный

Вот два примера GIF. Первый работает отлично, а второй - на черный.

Вот соответствующий фрагмент кода:

elseif ($fileType == 'gif') { 
    $src = imagecreatefromgif($file); 
    $dst = imagecreatetruecolor($newWidth, $newHeight); 
    imagecolortransparent($dst, imagecolorallocatealpha($dst, 0, 0, 0, 127)); 
    imagealphablending($dst, false); 
    imagesavealpha($dst, true); 
    imagecopyresampled($dst, $src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); 
    imagegif($dst, $file); 
} 
+2

Ни один из этих gifs не имеет прозрачности. – Mike

+0

Второе изображение не является gif. – Havenard

ответ

0

Первое преобразование второе изображение в формате GIF. Для этого, либо использовать любой обработки изображений инструмент (садомазо/Photoshop) или префикс ниже фрагмент кода:

// Load the JPEG 
$jpeg = imagecreatefromjpeg($file); 
// Save the image as a GIF 
imagegif($jpeg, $file); 

В данном фрагменте кода, вы используете imagecolorallocatealpha ($ Расст, 0, 0, 0, 127) функцию, которая добавит полную прозрачность вашего изображения. Вместо этого попробуйте использовать функцию imagecolorallocate ($ dst, 0, 0, 0) или не использовать параметр цвета в функции imagecolortransparent().

Смежные вопросы