X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Прозрачность и наложение двух изображений
sc2r2bey
sc2r2bey
Topic Starter сообщение 29.11.2010, 23:09; Ответить: sc2r2bey
Сообщение #1


сделал функцию наложения водного знака на изображение, водный знак с прозрачным слоев в формате png а картинка gif то прозрачный фон при выполнении функции становиться черным, а как сохранить прозрачность?

[php]<?php
function WaterMark($filename)
{
$ext = array(1=>".gif",".jpg",".png");
$inf = getimagesize($filename);
$ext = $ext[$inf[2]];
// создаем jpeg из файла
if ($ext==".gif")
{
$src_img = imagecreatefromgif($filename);
}
if ($ext==".jpg")
{
$src_img = imagecreatefromjpeg($filename);
}
if ($ext==".png")
{
$src_img = imagecreatefrompng($filename);
}
$xi = imagesx($src_img);
$yi = imagesy($src_img);
$logo = imagecreatefrompng("../../media/logo.png");
$xl = imagesx($logo);
$yl = imagesy($logo);
$xi = ($xi/2)-($xl/2);
$yi = ($yi/2)-($yl/2);
imagecopy($src_img, $logo, $xi, $yi, 0, 0, $xl, $yl);
//сохраняем результат
if ($ext==".gif")
{
imagegif($src_img, $filename);
}
if ($ext==".jpg")
{
imagejpeg($src_img, $filename);
}
if ($ext==".png")
{
imagepng($src_img, $filename);
}
imagedestroy($src_img);
imagedestroy($logo);
return true;
}
?>[/php]


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 30.11.2010, 2:04; Ответить: ZiTosS
Сообщение #2


surfer, тут нужно применять не imagecopy(), а imagecopymerge(), последний параметр которой определяет прозрачность второй картинки от 0 до 100. Если 0 - вторая картинка (источник-src) непрозрачна, 100 - вторая картинка (источник-src) полностью прозрачна

Так что замени в своём коде:

[php]imagecopy($src_img, $logo, $xi, $yi, 0, 0, $xl, $yl);[/php]на

[php]imagecopymerge($src_img, $logo, $xi, $yi, 0, 0, $xl, $yl, 50); // watermark с 50% прозрачностью[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 30.11.2010, 5:53; Ответить: sc2r2bey
Сообщение #3


это не то, он делает прозрачность всего водного знака, а не прозрачность прозрачности :)


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 30.11.2010, 12:39; Ответить: ZiTosS
Сообщение #4


surfer, То есть тебе надо сделать так: У тебя есть одно изображение, и тебе надо на него наложить другое изображение, которое частично прозрачно или что? Чем тебя данный вариант не устраивает?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 30.11.2010, 13:16; Ответить: sc2r2bey
Сообщение #5


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


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 2.12.2010, 1:56; Ответить: ZiTosS
Сообщение #6


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

Более полезная информация:
В компьютерной графике альфа-композиция обозначает процесс комбинирования изображения с фоном с целью создания эффекта частичной прозрачности.
Альфа-канал, также известный как маска-канал, это просто способ объединить переходную прозрачность с изображением. Формат GIF поддерживает простую бинарную прозрачность (когда любой пиксель может быть либо полностью прозрачным, либо абсолютно непрозрачным). Формат PNG позволяет использовать 254 или 65534 уровня частичной прозрачности.

Все три типа PNG изображений («TrueColor», «GrayScale» и индексированная палитра) могут содержать альфа-информацию, хотя обычно она применяется лишь с «TrueColor» изображениями. Вместо того, чтобы сохранять три байта для каждого пикселя (красный, зелёный и синий, RGB), сохраняются четыре: красный, зелёный, синий и альфа, таким образом получается RGBA.


Поэтому вывод, тебе не удастся наложить правильно изображение с полупрозрачными пикселями на gif-картинку. Это можно сделать только как я уже тебе сказал, методами GDlib. Но оба изображения должны быть не прозрачными или с бинарной прозрачностью. Но как я успел заметить, там тоже свои тонкости, изображение PNG становится темным, но прозрачным, при наложении от gif, возможно тут сказывается truecolor, поэтому советую создавать изображения не функциями imagecreatefrompng, imagecreatefromgif, imagecreatefromjpeg, а создавать сначала пустой лист true color с помощью - imagecreatetruecolor, а затем уже на этот лист копировать исходное изображение и накладывать водяной знак

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Как првильно указать слова для рекламы в Google на двух языках
1 Nekit 960 12.2.2024, 23:58
автор: malamut
Открытая тема (нет новых ответов) Продается сайт фотосток ИИ изображений
Хороший вариант!
20 alexey 3280 25.6.2023, 15:28
автор: alexey
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыКорректность показа вёрстки изображений на разных гаджетах
Не сохраняются пропорции изображений на смартфонах
1 master-vek 37259 25.3.2021, 13:22
автор: tedder
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыЛичный фотосток, много бесплатных изображений
15 Ultrastalker 5985 30.3.2020, 10:15
автор: Ultrastalker
Открытая тема (нет новых ответов) Продам 120 изображений с фотостока DepositPhotos
Выгодное предложение
6 Морфин 1792 20.1.2020, 20:36
автор: Морфин


 



RSS Текстовая версия Сейчас: 25.4.2024, 17:14
Дизайн