|
|
|
| Здравствуйте
как вставить одну картинку пнг в другую без потери прозрачности и качества? | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(22.04.2012 в 11:13)
| | Да просто, используя режимы работы с прозрачностью - imagealphablending или overlay (режим функции imagelayereffect). Вот только что значит без потери прозрачности в вашем случае не понятно. Так как речь идет о наложении и результирующий цвет каждого из слоев такого пирога будет рассчитываться по разному. При сохранении изображения, нужно сохранять альфа канал - imagesavealpha.
Формат png не теряет качества при перезаписи, в отличии от jpeg, если вы только сами не сожмете. Но компрессия не столь высока, и практически не замета. | |
|
|
|
|
|
|
|
для: confirm
(22.04.2012 в 11:23)
| | я использую такой код
define('ROOT_DIR', dirname(__FILE__).'/');
$file1 = ROOT_DIR.'img.png';
$file2 = ROOT_DIR.'watermark.png';
$file3 = ROOT_DIR.'img3.png';
$size1 = getimagesize($file1);
$size2 = getimagesize($file2);
$img1 = imagecreatefrompng($file1);
$img2 = imagecreatefrompng($file2);
imagecopy($img1,$img2,0,0,0,0,$size2[0],$size2[1]);
imagepng ($img1,$file3);
imagedestroy($img1);
imagedestroy($img2);
|
в результате теряется прозрачность и качество
если делать с форматом jpg то все работает
как поправить код чтобы работало с пнг? | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(22.04.2012 в 11:33)
| | Вы производите наложение с изменением размеров? Тогда в любом случае будут потеря качества, и лучший результат в этом случае будет при использовании imagecopyresampled().
В отношении прозрачности я написал выше - вам надо только раскрыть руководство и прочесть об указанных функциях. А вопрос что из чего у вас должно остаться прозрачным, так и остался открытым. | |
|
|
|
|
|
|
|
для: confirm
(22.04.2012 в 11:41)
| | спасибо за ответ
достаточно было только добавить
imagesavealpha($img1, true);
перед
imagepng ($img1,$file3);
качество перестало теряется при imagecopy
если добавлять еще imagealphablending($img1, true); то ничего не меняется | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(23.04.2012 в 10:51)
| | Так я вам потому и сказал - прочесть. Вы ведь не поясняете, что из чего не должно утратить прозрачность.
imagealphablending влияет на альфа канал следующим образом - цвет и прозрачность пикселя основного изображения объединяется с цветом и прозрачностью пикселя изображения, которое накладывается поверх данного. Тут может сохраняться прозрачность или нет (режим замещения). Если вас беспокоит прозрачность верхнего слоя, то эту установку можно оставить по умолчанию.
В общем читайте, чтобы понимать, что и когда нужно применять. | |
|
|
|