уменьшение прозрачного gif

krollik

Новичок
уменьшение прозрачного gif

До недавнего времени для уменьшения картинок я использовл вот этот скрипт:
PHP:
//уменьшение фотографии
function resizeimg($filename, $smallimage, $w, $h) {
	/*
    // Имя файла с масштабируемым изображением
    $filename = "../".$filename;
    // Имя файла с уменьшенной копией.
    $smallimage = "../".$smallimage;
    */
    // определим коэффициент сжатия изображения, которое будем генерить
    $ratio = $w/$h;
    // получим размеры исходного изображения
    $size_img = getimagesize($filename);
    // Если размеры меньше, то масштабирования не нужно
    if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
    // получим коэффициент сжатия исходного изображения
    $src_ratio=$size_img[0]/$size_img[1];

    // Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
    // пропорции исходного изображения
    if ($ratio<$src_ratio) {
    	$h = $w/$src_ratio;
    } else {
    	$w = $h*$src_ratio;
    }
    // создадим пустое изображение по заданным размерам
    $dest_img = imagecreatetruecolor($w, $h);
    $white = imagecolorallocate($dest_img, 255, 255, 255);
    if ($size_img[2]==2)  $src_img = imagecreatefromjpeg($filename);
    else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
    else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);

    // масштабируем изображение     функцией imagecopyresampled()
    // $dest_img - уменьшенная копия
    // $src_img - исходной изображение
    // $w - ширина уменьшенной копии
    // $h - высота уменьшенной копии
    // $size_img[0] - ширина исходного изображения
    // $size_img[1] - высота исходного изображения
    imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
    // сохраняем уменьшенную копию в файл
    if ($size_img[2]==2)  imagejpeg($dest_img, $smallimage);
    else if ($size_img[2]==1) imagegif($dest_img, $smallimage);
    else if ($size_img[2]==3) imagepng($dest_img, $smallimage);
    // чистим память от созданных изображений
    imagedestroy($dest_img);
    imagedestroy($src_img);
    return true;
}
Но недавно появилась проблема. Мне надо чтобы этот скрипт мог уменьшать прозрачные gif, с сохранностью прозрачности, или хотябы с заменой её на определённый цвет.. Есть ли такая возможность?
 

Sender

Новичок
imagecolortransparent -- Define a color as transparent

Description
int imagecolortransparent ( resource image [, int color] )


imagecolortransparent() sets the transparent color in the image image to color. image is the image identifier returned by imagecreatetruecolor() and color is a color identifier returned by imagecolorallocate().
 

krollik

Новичок
Хм.. А можно пример применения на той функции, которую я указал. При уменьшении картинки прозрачность заменяется на чёрный цвет
 

Фанат

oncle terrible
Команда форума
люблю я пхп программирование.
это тебе не медицина, когда надо 6 лет учиться и 10 лет практики.

всего-то надо знать - один адрес форума! Всё.
надо тебе картинку отресайзить - пошёл, поклянчил функцию.
надо функцию переделать - пошёл, попросил, чтобы функцию переписали.
красата. напрягаться вообще не надо.
 

krollik

Новичок
Я просто не понял, как работает функция, а для вас показать на примере не более 1 минуты! Это разве трудно?
 

Фанат

oncle terrible
Команда форума
ты просил не пример.
ты хочешь, чтобы тебе переделали функцию, которую "ты указал".
это раз.
между ответом Sender-а и твоим - разница в 5 минут. ТЫ ДАЖЕ НЕ ПЫТАЛСЯ понять.
это два.

Так что не не надо мне по ушам ездить.
 

krollik

Новичок
Ну не надо - я пытался, вставил в код такую строку
PHP:
imagecolortransparent($dest_img, '#000000');
Но картинка на выходе всёравно без прозрачности.
А то что я написал показать на функции, я не это имел ввиду. Мне просто покажите функцию, у которой в скобках будут реальные данные
 

WP

^_^
Где травку берешь? Почитай про аргументы imagecolortransparent, их типы.
 
Сверху