2015-05-22 3 views
0

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

$watermark_l = "source/watermark_l.png"; 
$size_wm_l = getimagesize($watermark_l); 
$watermark_l = imagecreatefrompng($watermark_l); 
$filename = "input/$gallery/$file"; 
header('Content-Type: image/jpeg'); 
list($width, $height) = getimagesize($filename); 
$x_large = 2000; 
$y_large = 1333; 
$image_p = imagecreatetruecolor($x_large, $y_large); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $x_large, $y_large, $width, $height); 
imagecopy($image_p, $watermark_l, 0, 0, 0, 0, $size_wm_l[0], $size_wm_l[1]); 
imagejpeg($image_p, "output/$gallery/2000x1333_$file", 100); 
+2

вас 'применяя его к jpeg, который не использует прозрачность. Я предлагаю вам изменить формат на png. –

+0

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

ответ

0

Попробуйте включить альфа-смешивание на изображениях после ImageCreate-х:

ImageAlphaBlending($watermark_l,true); 
ImageAlphaBlending($image_p,true); 
0

Вот хороший пример для добавления водяных знаков на изображениях с использованием PHP -

<?php 
// Load the stamp and the photo to apply the watermark to 
$stamp = imagecreatefrompng('stamp.png'); 
$im = imagecreatefromjpeg('photo.jpeg'); 

// Set the margins for the stamp and get the height/width of the stamp image 
$marge_right = 10; 
$marge_bottom = 10; 
$sx = imagesx($stamp); 
$sy = imagesy($stamp); 

// Copy the stamp image onto our photo using the margin offsets and the photo 
// width to calculate positioning of the stamp. 
imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp)); 

// Output and free memory 
header('Content-type: image/png'); 
imagepng($im); 
imagedestroy($im); 
?> 

Источник - http://php.net/manual/en/image.examples-watermark.php