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;
}
?>
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top