Масштабирование Gif-файла
Есть код :
Код:
<?php
// f - имя файла
// src - исходное изображение
// dest - результирующее изображение
// w\h - ширина\высота изображения
// ratio - коэффициент пропорциональности
$src = imagecreatefromgif($f);
header("Content-type: image/gif");
$w_src = imagesx($src);
$h_src = imagesy($src);
$ratio = $h_src/$h;
$w_dest = round($w_src/$ratio);
$h_dest = round($h_src/$ratio);
$dest = imagecreatetruecolor($w_dest,$h_dest);
imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
imagegif($dest);
imagedestroy($dest);
imagedestroy($src);
?>
// f - имя файла
// src - исходное изображение
// dest - результирующее изображение
// w\h - ширина\высота изображения
// ratio - коэффициент пропорциональности
$src = imagecreatefromgif($f);
header("Content-type: image/gif");
$w_src = imagesx($src);
$h_src = imagesy($src);
$ratio = $h_src/$h;
$w_dest = round($w_src/$ratio);
$h_dest = round($h_src/$ratio);
$dest = imagecreatetruecolor($w_dest,$h_dest);
imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
imagegif($dest);
imagedestroy($dest);
imagedestroy($src);
?>
Но он выдает масштабированное изображение с черным фоном, т.е. там где должна быть прозрачность - черный цвет.
Кто подскажет как сохранить прозрачность?
imagecolortransparent.
Кстати, полное описание и много интересных примеров можно найти в документации и примечаниям к каждой функции внизу страницы:
http://ru2.php.net/manual/ru/ref.image.php
Попробуйте использовать функцию
Кстати, полное описание и много интересных примеров можно найти в документации и примечаниям к каждой функции внизу страницы:
http://ru2.php.net/manual/ru/ref.image.php
Код:
$colorTransparent = imagecolortransparent($src);
if( $colorTransparent >= 0 && $colorTransparent < imagecolorstotal( $src ) )
{
imagepalettecopy($src, $dest);
imagefill($dest, 0, 0, $colorTransparent);
imagecolortransparent($dest, $colorTransparent);
imagetruecolortopalette($dest, true, 256);
}
if( $colorTransparent >= 0 && $colorTransparent < imagecolorstotal( $src ) )
{
imagepalettecopy($src, $dest);
imagefill($dest, 0, 0, $colorTransparent);
imagecolortransparent($dest, $colorTransparent);
imagetruecolortopalette($dest, true, 256);
}
И все пашет. Проверялось на GD 2.0.28 (PHP4) и GD 2.0.34 (PHP5).
Офф: Привет Запорожью! У меня аутсорсер дизайнер в ваших краях живёт, давно с ним работаем.