Прошу совета по работе с GD (php)

12
Fallout_27
На сайте с 21.01.2006
Offline
139
1142

Итак, проблема заключается в следующем:

Есть фото-исходник, на который программно накладывается watermark.

Суть в том, что в результате слетает цветовая гамма водяного знака (это картинка gif/png).

В аттаче поста - иллюстрация, как теряется цвет надписи.

Это неизбежный косяк GD или это косяк моего кода?

jpg color_gd.jpg
Кирилл Курек. Дизайн сайтов, Flash-анимация, разработка сайтов «под ключ» (http://www.kurek.ru)
[Удален]
#1

КОД в студию

Fallout_27
На сайте с 21.01.2006
Offline
139
#2
MOP1:
КОД в студию

$from = imagecreatefromjpeg('image.jpg');
$to = imagecreatetruecolor(500,300);
$cutx = (imagesx($from) - 500) / 2;
$cuty = (imagesy($from) - 300) / 2;
imagecopyresampled($to,$from,0,0,$cutx,$cuty,imagesx($to),imagesy($to),500,300);
$from2 = imagecreatefrompng('water.png');
imagecopyresampled($to,$from2,imagesx($to)-imagesx($from2),0,0,0,imagesx($from2),imagesy($from2),imagesx($from2),imagesy($from2));
imagejpeg($to,'1.jpg',100);
C
На сайте с 06.04.2009
Offline
13
#3

Смотрите цветовую гамму gif'а, скорее всего дело в ней.

http://www.weblancer.net/users/Tkachenko/ (http://www.weblancer.net/users/Tkachenko/)
[Удален]
#4

так на вскидку не скажу, что делать...

дело в том, что нужно копировать и пересчитывать палитры, когда совмещаете изображения

смотрите в сторону функции и подобных

http://ua2.php.net/manual/ru/function.imagepalettecopy.php

Fallout_27
На сайте с 21.01.2006
Offline
139
#5
camokat:
Смотрите цветовую гамму gif'а, скорее всего дело в ней.

Причем тут gif'овая гамма, если в текущем примере png берем?

Проверил и на jpg - тупое пересохранение картинки через GD портит цвет шрифта.

[Удален]
#6
$watermark = new Imagick($watermark);
$image = new Imagick($from);
$image->resizeImage(1000, false, Imagick::FILTER_LANCZOS, 1);
$width = $image->getImageWidth() - $watermark->getImageWidth();
$height = $image->getImageHeight() - $watermark->getImageHeight();
$image->compositeImage($watermark, $watermark->getImageCompose(), $width, $height, imagick::COLOR_ALPHA);
$image->writeImage($to);

попробуй нечто такое, может сканает))

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#7

ммм... я это... разницы между картинками не вижу :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
[Удален]
#8
LEOnidUKG:
ммм... я это... разницы между картинками не вижу :)

на вотермарк посмотри

MOP1 добавил 07.04.2009 в 18:03

bearman:
попробуй нечто такое, может сканает))

это же не ГД

[Удален]
#9

MOP1, а кто сказал что мир на гд остановился? все давно юзают имагик :) гд это какбы утарело имхо)

Fallout_27
На сайте с 21.01.2006
Offline
139
#10
MOP1:
так на вскидку не скажу, что делать...
дело в том, что нужно копировать и пересчитывать палитры, когда совмещаете изображения

смотрите в сторону функции и подобных
http://ua2.php.net/manual/ru/function.imagepalettecopy.php

Обе картинки - труколор, нету там палитр, если я не ошибаюсь.

bearman,

Пять баллов. Я пытаюсь разрулить проблему с GD, в ответ - кусок кода от мэджика. Я про него знаю, но на текущий момент меня интересует именно GD.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий