Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Работа с альфа каналом

Сообщения:  [1-10]   [11-15] 

 
 автор: Loki   (04.04.2008 в 16:22)   письмо автору
 
   для: Саня   (04.04.2008 в 14:19)
 

Пробовал. Не совсем то, что нужно: он умеет сохранять альфа канал для того слоя где этот канал был изначально, но не умеет применять к слою где его изначально небыло.
То есть в случае imagecopy() получается абсолютно непрозрачный фон, на который наложено полупрозрачное изображение маски.

<?
header
('Content-type: image/png');
$im imagecreatefromjpeg("test.jpg"); //непрозрачный исходник
$mask imagecreatefrompng("alpha.png"); //полупрозрачная маска
imagecopy($im$mask0000imagesx($mask), imagesy($mask));
imagepng($im);

   
 
 автор: Саня   (04.04.2008 в 14:19)   письмо автору
 
   для: Loki   (04.04.2008 в 13:06)
 

А imagecopy() не пробовали?

   
 
 автор: Loki   (04.04.2008 в 13:06)   письмо автору
 
   для: mihdan   (04.04.2008 в 12:06)
 

Это флеш. Я уже написал что флеш не подходит в силу своих специфических ограничений.

Пока выложу вариант который я родил, хотя он мне и не нравится. Очень надеюсь что у кого-то есть решение лучше.
<?
header
('Content-type: image/png');
$im imagecreatefromjpeg("test.jpg");
$mask imagecreatefrompng("alpha.png");
imagealphablending($imfalse);
imagesavealpha($imtrue);    

for (
$i=0$i<imagesx($mask); $i++)
{
    for (
$j=0$j<imagesy($mask); $j++)
    {
        
imagesetpixel($im$i$j, (imagecolorat($im$i$j)+(imagecolorat($mask$i$j)>>17<<24)));
    }
}

imagedestroy($mask);
imagepng($im);
imagedestroy($im);

   
 
 автор: mihdan   (04.04.2008 в 12:06)   письмо автору
 
   для: Loki   (04.04.2008 в 11:31)
 

Это пробовали? На мой взгляд интересный вариант! Но..

   
 
 автор: Loki   (04.04.2008 в 11:31)   письмо автору
 
   для: Loki   (02.04.2008 в 16:50)
 

Ну что, господа? Неужели в разгар 21 века всем хватает однопискельной прозрачности? Или в PHP пока нет более красивого способа нежели полный перебор?

   
 
 автор: AlexSol   (02.04.2008 в 18:51)   письмо автору
 
   для: Loki   (02.04.2008 в 17:09)
 

да, с флешом или наложение или полупрозрачность (

   
 
 автор: Loki   (02.04.2008 в 17:24)   письмо автору
 
   для: mihdan   (02.04.2008 в 17:15)
 

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

   
 
 автор: Loki   (02.04.2008 в 17:18)   письмо автору
 
   для: Antohins   (02.04.2008 в 17:10)
 

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

   
 
 автор: Antohins   (02.04.2008 в 17:16)   письмо автору
 
   для: Loki   (02.04.2008 в 17:09)
 

http://ballista.ru/scripts/swfir


и вот еще)

   
 
 автор: mihdan   (02.04.2008 в 17:15)   письмо автору
 
   для: Loki   (02.04.2008 в 16:50)
 

Наложение маски:
http://mysitez.km.ua/Programming/?phptransmask

   

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования