Wie kann ich ein Bild auf ein Bild, PHP wie ein Wasserzeichen hinzufügen
Frage
Ich versuche, eine kleine PHP-Funktion zu schreiben, um ein Bild zu nehmen und ein Wasserzeichen-Typen Bild oben auf das Bild anwenden und sie sie als ein Bild speichern, dieser Code mit 0 Fehlern ausgeführt wird, aber das Wasserzeichen nicht anwendbar ist, ist es etwas offensichtlich, dass auf stants, warum es nicht?
<?PHP
$source_file_path ='http://cache2.mycrib.net/images/image_group92/0/43/653807d5727a46498180e8ef57fdf7819b2b0c.jpg';
$watermark_image='fpwatermark.gif'; // the watermark image
$destination_image ='coooolgif.gif'; // where to save new file
$imagesize = getimagesize($destination_image);
$watermarksize = getimagesize($watermark_image);
$watermark_x = $imagesize[0] - $watermarksize[0] - 2;
$watermark_y = $imagesize[1] - $watermarksize[1] - 2;
//run function
watermark_img($watermark_image, $destination_image, $watermark_x, $watermark_y, $watermark_w, $watermarksize[0], $watermarksize[1], $source_file_path);
function watermark_img($watermark_src, $image_src, $watermark_x, $watermark_y, $watermark_w,$watermark_h, $source_file_path) {
//Determine what type of image we're working with
list($width, $height, $type) = getimagesize($image_src);
$image_ext = $type;
switch (strtolower($image_ext)) {
#gif
case 1:
$image = imagecreatefromgif($image_src);
break;
#jpg
case 2:
$image = imagecreatefromjpeg($image_src);
imageAlphaBlending($image, true);
break;
#png
case 3:
$image = imagecreatefrompng($image_src);
imageAlphaBlending($image, true);
break;
default:
return false;
}
//Create an instance of the watermark in memory
if (!($watermark = imagecreatefromgif($watermark_src)))
return false; //Make sure your Watermark is a GIF
//Add watermark to the image
if (!(imagecopy($image, $watermark, $watermark_x, $watermark_y, 0, 0, $watermark_w,
$watermark_h)))
return false;
//Resave the image with the watermark now in place
if (!(imagejpeg($image, $image_src)))
return false;
//Destroy instaces of images to free up RAM
imagedestroy($image);
imagedestroy($watermark);
//Apparently everything went well.
return $image_ext;
}
?>
Lösung
Ich glaube, Sie brauchen, dies zu ändern (hier ist ein einfaches Tutorial http: //www.cafewebmaster .com / Bild-Wasserzeichen-php ):
//Add watermark to the image
if (!(imagecopy($image, $watermark, $watermark_x, $watermark_y, 0, 0, $watermark_w,
$watermark_h)))
mit:
//Add watermark to the image
if (!(imagecopymerge($image, $watermark, $watermark_x, $watermark_y, 0, 0, $watermark_w,
$watermark_h, 100)))
oder benutzen Wideimage ;)
Andere Tipps
Hier ist eine Anleitung, wie man es von einem Wasserzeichen zu machen, ein transparentes PNG-Bild mit: http://www.sitepoint.com/article/watermark-images-php/
ich verwendet habe, dass vor und es funktioniert. Das Problem mit dem Code, den Sie haben, ist wahrscheinlich, dass Sie eine JPEG zu erzeugen sind versucht, aber die Dateierweiterung ist ein gif, so ist es nicht richtig gemacht wird. sein könnte, obwohl falsch sein.
Wenn es nur nicht ein endgültiges Bild zu speichern, dann ist das nur ein Berechtigungsproblem mit dem Ordner. In diesem Fall, werden Sie wahrscheinlich den Ordner 777 über chmod setzen müssen.