Kup
Новичок
Проблема с прозрачными гифами. Оттенки черного тоже становятся прозрачными...
Здравствуйте.
У меня есть проблема, которую сам решить я не могу, хотя вожусь уже почти сутки. Возможно я что-либо недопонимаю в теории гифов и тп, не знаю.
Собственно, сама проблема.
Есть исходный гиф, с прозрачной областью.
Есть второй гиф (гиф2).
Нужно создать картинку, наложив гиф2 на гиф, причем гиф2 меньше чем гиф и прозрачная область должна сохраниться.
Сделал черный цвет в качестве прозрачного, и на первый взгляд - все работает. Но для картинок (гиф2) с черными пикселями выходит косяк - эти пиксели становятся прозрачными. С этой проблемой я бы справился, но, похоже, прозрачными становятся не только чисто черные пиксели.
Причем для разных гиф2 - по-разному.
вот что получается, если вообще не решать эту проблему -
http://www.1kiss.ru/img/photos/128/lets/1.gif
если решать её следующим образом, то для части фоток (гиф2) это помогает, а для части - не совсем.
Метод решения:
результат - для одних фоток - практически идеально, для других - вот - http://www.1kiss.ru/img/photos/128/lets/2.gif
причем если менять константы в if (50, 10) то можно подобрать нужные для получения правильного результата, но они не подойдут для другой картинки.
Понимаю, что эта тема, возможно, уже неоднократно обсуждалась на форуме, но я не смог подобрать правильных слов для поиска. Так что если кто просто ткнет меня носом в другую тему, где есть решение этой проблемы - буду только благодарен.
Заранее спасибо всем!
Здравствуйте.
У меня есть проблема, которую сам решить я не могу, хотя вожусь уже почти сутки. Возможно я что-либо недопонимаю в теории гифов и тп, не знаю.
Собственно, сама проблема.
Есть исходный гиф, с прозрачной областью.
Есть второй гиф (гиф2).
Нужно создать картинку, наложив гиф2 на гиф, причем гиф2 меньше чем гиф и прозрачная область должна сохраниться.
Сделал черный цвет в качестве прозрачного, и на первый взгляд - все работает. Но для картинок (гиф2) с черными пикселями выходит косяк - эти пиксели становятся прозрачными. С этой проблемой я бы справился, но, похоже, прозрачными становятся не только чисто черные пиксели.
Причем для разных гиф2 - по-разному.
вот что получается, если вообще не решать эту проблему -
http://www.1kiss.ru/img/photos/128/lets/1.gif
если решать её следующим образом, то для части фоток (гиф2) это помогает, а для части - не совсем.
Метод решения:
PHP:
for ($ix=0; $ix<$real_width; $ix++)
for ($iy=0; $iy<$real_height; $iy++)
{
$rgb = ImageColorAt($face_img, $ix, $iy);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
//print $r." : ".$g." : ".$b." : "."<br>";
if (($r+$g+$b)<=50)
{
$face_reblack = imagecolorallocate($face_img, $r+10, $g+10, $b+10);
imagesetpixel($face_img, $ix, $iy,$face_reblack);
}
}
причем если менять константы в if (50, 10) то можно подобрать нужные для получения правильного результата, но они не подойдут для другой картинки.
Понимаю, что эта тема, возможно, уже неоднократно обсуждалась на форуме, но я не смог подобрать правильных слов для поиска. Так что если кто просто ткнет меня носом в другую тему, где есть решение этой проблемы - буду только благодарен.
Заранее спасибо всем!

)