This Might Be Useful

Изменяем размеры картинки с сохранением прозрачности (PHP+GD)

По умолчанию при изменении размеров полупрозраных (и прозрачных) картинок вместо прозрачного фона получается заливка цветом. Это негативно сказывается на внешнем виде изображения и нервах. Поэтому я расскажу, как сохранять прозрачность.
Итак, для этого нам понадобятся следующие функции:

  • imagecolorallocatealpha
    int imagecolorallocatealpha ( resource $image, int $red, int $green, int $blue, int $alpha)
  • imagealphablending
    bool imagealphablending ( resource $image, bool $blendmode)
  • imagesavealpha
    bool imagesavealpha ( resource $image, bool $saveflag)

Код в результате выглядит примерно так:

PHP:
  1. $imgInfo = getimagesize($img);
  2. $im = imagecreatefrompng($img);
  3. $newImg = imagecreatetruecolor($nWidth, $nHeight);
  4. imagealphablending($newImg, false);
  5. imagesavealpha($newImg,true);
  6. $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
  7. imagefilledrectangle($newImg, 0, 0, $nWidth, $nHeight, $transparent);
  8. imagecopyresampled($newImg, $im, 0, 0, 0, 0, $nWidth, $nHeight, $imgInfo[0], $imgInfo[1]);

Так что мою старую функцию можно доработать так, чтобы она сохраняла прозрачность картинок. Заодно и тип файла можно проверять не по расширению, а по тому, что вернет getimagesize (исходя из приведенного выше примера - это элемент $imgInfo[2]).

Постовой: Даже ребенок знает, что сделать сайт недостаточно, надо еще и найти качественный хостинг.
· No related posts

- Коментировать
- Trackback

One Response to “Изменяем размеры картинки с сохранением прозрачности (PHP+GD)”


  1. Memphys Says:

    Спасибо. Недавно столкнулся с подобной проблемой, но решение было не найдено, а необходимость исчезла в скором времени.) Теперь буду "вооружен" знанием)

Leave a Reply

code