Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2016, 20:31   #1
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию Наложение нескольких png 32 бита друг на друга, у которых прозрачный фон

Нашел пример в котором Налаживается png 24 бита на jpg

Код:
Прозрачность в PNG изображениях

Если Вы хотите поместить прозрачное PNG-изображение на другое изображение,
необходимо использовать ImageAlphaBlending, а также все использующиеся PNG-изображения должны быть сохранены в формате PNG-24 (опция Save for Web в Фотошопе).

например Вы хотите поместить прозрачный логотип на свою фотографию. Тогда нужно сделать так:

<?php 
$photoImage = ImageCreateFromJPEG('photo.jpg'); 
ImageAlphaBlending($photoImage, true);



$logoImage = ImageCreateFromPNG('logo.png'); 
$logoW = ImageSX($logoImage); 
$logoH = ImageSY($logoImage);

ImageCopy($photoImage, $logoImage, 0, 0, 0, 0, $logoW, $logoH);

ImageJPEG($photoImage); // вывод в браузер

ImageDestroy($photoImage); 
ImageDestroy($logoImage); 
?>
А мне нужно наложить 2 и более png 32 бита у которых фон прозрачный.
Пробую всякие:
ImageAlphaBlending($png1, true);
//imagecopymerge($dest, $src, 10, 10, 0, 0, 100, 47, 100); //
ImageCopy($png1, $png2, 0, 0, 0, 0, 96, 90);



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

Разобрался с помощью
Код:
imagesavealpha($png1, true);
imagesavealpha($png2, true);
Но я до этого мучился долго, а тут вышло что только форум засорил, так как через час уже решил задачу. Извините, я обычно прошу помощи когда долго не могу найти инфы.

Последний раз редактировалось Illusiony; 28.11.2016 в 20:49.
Illusiony вне форума Ответить с цитированием
Старый 28.11.2016, 20:49   #2
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Но тут попутно возник другой.

Есть какой нибудь иной способ наложение множества рисунков чем последовательное использование
Код:
imagecopyresampled($png2, $png1, 0, 0, 0, 0, 96, 90, 96, 90);
Результат
Код:
imagecopy($png2, $png1, 0, 0, 0, 0, 96, 90)
; вроде такой же получается.

У меня порядка 20 рисунков, таким образом нужно использовать 19 или 20 раз эту функцию.

Других вариантов для уменьшения нагрузки на исполнение скрипта нету?

Последний раз редактировалось Illusiony; 28.11.2016 в 20:56.
Illusiony вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо преобразовать png в jpg при этом прозрачный фон в нужный цвет Illusiony HTML и CSS 1 11.12.2015 23:46
пары простых чисел, троичные представления которых получаются друг из друга записью в обратном порядке Студент8565 Помощь студентам 20 20.05.2013 18:47
Наложение изображений друг на друга (GD) Chiliec PHP 2 29.12.2012 15:08
Проблема со стилями, наложение друг на друга SeЯgey HTML и CSS 1 27.03.2012 12:35
Прозрачный фон png TacoBell Общие вопросы C/C++ 3 03.10.2010 00:09