Watermarking in PHP - Bild verschwindet...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Watermarking in PHP - Bild verschwindet...

    Hallo,

    Ich verzweifel gerade an diesem Script. Es soll nichts anderes tun, als eine png-Datei als "Wasserzeichen" in eine jpg-Datei einfügen und dann wieder unter der selben Adresse zu speichern (quasi überschreiben).

    Das tut es aber leider Gottes nicht. GDLIB ist selbstverständlich aktiviert.

    Code:
    <?php
    
    
    function watermark($image, $watermark, $save_as, $position=5, $transparency=50, $t_x=0, $t_y=0) {
    
            // 1 oben links 
            // 2 oben mittig
            // 3 oben rechts
            // 4 Mitte links
            // 5 Mitte
            // 6 Mitte rechts
            // 7 unten links
            // 8 unten mittig
            // 9 unten rechts
        // erlaubt sind png und jpeg
        if($position < 1 || $position > 9)
            return FALSE;
        if(!file_exists($image) || !file_exists($watermark))
            return FALSE;
    	
        $infos_img = getimagesize($image);
        $infos_wat = getimagesize($watermark);
        if(!in_array($infos_img[2], array(2,3)) ||     !in_array($infos_wat[2], array(2,3)))
            return FALSE;
        if($infos_img[0]<$infos_wat[0] || $infos_img[1]<$infos_wat[1])
            return FALSE;
        if($infos_wat[0]<$t_x || $infos_wat[1]<$t_y)
            return FALSE;
        $transparency = 100 - $transparency;
        if($transpareny < 0 || $transpareny > 100)
            return FALSE;
        @unlink($save_as);
    
        // Position x        
        switch (($position-1)%3) {
            case 0: 
                $pos_x = 0;
                break;
            case 1:
                $pos_x = round(($infos_img[0]-$infos_wat[0])/2, 0);
                break;
            case 2:
                $pos_x = $infos_img[0]-$infos_wat[0];
                break;
        }
        // Position y
        switch (floor(($position-1)/3)) {
            case 0: 
                $pos_y = 0;
                break;
            case 1:
                $pos_y = round(($infos_img[1]-$infos_wat[1])/2, 0);
                break;
            case 2:
                $pos_y = $infos_img[1]-$infos_wat[1];
                break;
        }
        // watermark-procedure
        if($infos_img[2] == 2)
            $img_image = imagecreatefromjpeg($image);
        if($infos_img[2] == 3)
            $img_image = imagecreatefrompng($image);
        if($infos_wat[2] == 2)
            $img_watermark = imagecreatefromjpeg($watermark);
        if($infos_wat[2] == 3)
            $img_watermark = imagecreatefrompng($watermark);
        imagealphablending($img_image, TRUE);
        imagealphablending($img_watermark, TRUE);
        imagecolortransparent($img_watermark, imagecolorat($img_watermark, $t_x, $t_y));
        imagecopymerge($img_image, $img_watermark, $pos_x, $pos_y, 0, 0, $infos_wat[0], $infos_wat[1], $transparency);
        if(strtolower(substr($save_as, -3)) == "png") {
            if(imagepng($img_image, $save_as))
                return TRUE;
            else
                return FALSE;
        } else {
            if(imagejpeg($img_image, $save_as))
                return TRUE;
            else
                return FALSE;
        }
        return FALSE;
    }
    
    $bildv=$_GET['bild'];
    $logov=$_GET['logo'];
    
    watermark($bildv, $logov, $bildv);
    ?>
    Aufrufen tu ich das Script dann so:
    http://www.starclash.de/upload/test/...&logo=logo.png

    Stattdessen ist die Bilddatei anschließend verschwunden.
    Was mach ich da? Ich verzweifel gleich...

    Danke,
    winter

  • #2
    Mach Testausgaben und schau in welche IFs und ELSEs du läufst.

    Kommentar


    • #3
      Original geschrieben von onemorenerd
      Mach Testausgaben und schau in welche IFs und ELSEs du läufst.
      Gar keine IF oder ELSES... leider...

      Kommentar


      • #4
        schau mal:
        $transparency = 100 - $transparency;
        if($transpareny < 0 || $transpareny > 100)
        achso und wenn Du das bild erst löschst und dann imagecreatefromjpeg machen willst wird das nicht gehen
        watermark($bildv, $logov, $bildv);
        --> $image = $save_as
        ... @unlink($save_as);
        $img_image = imagecreatefromjpeg($image);
        das geht nicht
        Zuletzt geändert von MelloPie; 24.01.2006, 15:40.
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar

        Lädt...
        X