imagecopyresampled

 
0
 
PHP
ava
NewDima | 21.09.2008, 12:57
моя задача создать изображение, скопировать на него некий фон, и на этот фон скопировать другое изображение с учетом прозрачности последнего, установленной с функцией imagecolortransparent.
для этого я написал следующий код:

//читаю фон
$img_back = imagecreatefromjpeg('./img/back.jpg');
//читаю налаживаемое изображение
$img_num = imagecreatefrompng('./img/'.rand(0, 10).'.png');
//ставлю белый прозрачным
$trans_color = imagecolorallocate($img_num, 255,255,255);
imagecolortransparent($img_num, $trans_color);

//копирую фон
imagecopyresampled($img, $img_back, 0, 0, 0, 0, $img_width, $img_width, $img_width, $img_width);
//копирую изображение
imagecopyresampled($img, $img_num, 0, 0, 0, 0, $img_width, $img_width, $img_width,$img_width);

Header('Content-type: image/jpg');
imagejpeg($img);


фон у меня - цветное изображение, рисунок - черный на белом. Требуемый результат - черный рисунок на цветном фоне.
Не пойму почему, но результатом является изображение, где бывший черно-белый рисунок уже приведен к цветам фона, т.е. если самый темный цвет фона - синий, то черный цвет на изображении буден заменен на синий (!!!), а белый станет прозрачным (как и требуется). Не могу понять, в чем причины изменения цвета на налаживаемом изображении. Как от этого избавиться?
Ответы (2)
ava
bars80080 | 21.09.2008, 13:56 #
причина проста - в наборе цветов. для пнг и гиф изображений все краски строятся из существующего для них набора, который был заявлен при создании изображения. чтобы сделать чёрный цвет, которого нет в наборе, надо его вначале туда добавить. к сожалению, не подскажу чем, но для этого есть функции, покапайся
ava
skyboy | 21.09.2008, 22:53 #
не совсем. PNG есть индексированный и неиндексированный(PNG-32). у тебя все же, по-видимому, индексированный как раз. так что кроме указанного уточнения, замечание bars80080 вполне правдоподобно.
могу предложить полурешением создавать imagecreatetruecolor подложку и на него копировать содержимое твоего открытого png, чтоб данные имели точно неиндексированный тип.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить