Xpoint
   [напомнить пароль]

Прозрачный фон png-файла при растягивании становится чёрным

Метки: [без меток]
2007-10-10 07:21:09 [обр] Михаил Костиков(49/97)[досье]

Добрый день!
Прошу помощи в решении такой проблемы:
Надо на картинку наложить watermark. Но при этом watermark надо растянуть по ширине картинки.
Watermark - png24-файл с альфа-каналом

   list($width, $height) = getimagesize($path.$fn);
   list($width_w, $height_w) = getimagesize($path."watermark.png");

// получить width и height для watermark
   $percent_w_full = $width / $width_w;
   $width_w_full = $width;
   $height_w_full = $height_w * $percent_w_full;
   
   $image = imagecreatefromjpeg($path.$fn);
   $image_w = imagecreatefrompng($path."watermark.png");

   ImageAlphaBlending($image, true);
   ImageAlphaBlending($image_w, true);

// создаём watermark нужных размеров
   $image_w_full = imagecreatetruecolor($width_w_full, $height_w_full);
   ImageAlphaBlending($image_w_full, true);
   imagecopyresampled($image_w_full, $image_w, 0, 0, 0, 0, $width_w_full, $height_w_full, $width_w, $height_w);
   
// накладываем watermark на исходный рисунок
   $dst_y = $height - $height_w_full;

и вот здесь если я накладываю исходный watermark, то всё нормально.

   imagecopymerge($image, $image_w, 0, $dst_y, 0, 0, $width_w, $height_w, 100);

Но мне надо наложить растянутый watermark, и я заменяю эту строчку на:

   imagecopymerge($image, $image_w_full, 0, $dst_y, 0, 0, $width_w_full, $height_w_full, 100);

В результате фон watermark'a становится не прозрачным, а чёрным - и в этом проблема.
Я подозреваю, что фон портится при растягивании watermark'a с помощью imagecopyresampled()

Окончание кода:

   imagejpeg($image, $path.$fn, 100);
   
   imagedestroy($image);
   imagedestroy($image_w);
   imagedestroy($image_w_full);

Буду благодарен за помощь.

спустя 8 дней [обр] Porcelanosa[досье]
Powered by POEM™ Engine Copyright © 2002-2005