hilfe bei ttf (wasserzeichen) in function einbauen...

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

  • hilfe bei ttf (wasserzeichen) in function einbauen...

    hallo,
    habe hier folgendes skript,
    welches nach aufruf alle bilder im angegebenen ordner mit einem text überzieht:
    PHP-Code:
    <?php
    //remember the trailing slash
    $dir '/home/albums/bilder/';
    $text 'copyright 2004 by';
    $fontsize 5;//1 - 5
    $dh opendir($dir);
    while(
    false !== ($file readdir($dh))) {
         if(
    $file[0] != '.') {
             echo 
    'Adding watermark to '.$dir.$file."\n";
             
    $fileinfo pathinfo($file);
             switch(
    strtolower($fileinfo['extension'])) {
             case 
    'png':
                 
    $ih imagecreatefrompng($dir.$file);
                 break;
             case 
    'jpg':
             case 
    'jpeg':
             case 
    'jpe':
                 
    $ih imagecreatefromjpeg($dir.$file);
                 break;
             case 
    'gif':
                 
    $ih imagecreatefromgif($dir.$file);
                 break;
             default:
                 echo 
    'I don\'t know what to do with the extension '.$fileinfo['extension']."\n";
                 break;
             }
             
    imagealphablending($ihtrue);
             
    $color imagecolorallocatealpha($ih25525525550);
             
    $x = (imagesx($ih) - strlen($text) * imagefontwidth($fontsize)) / 2;
             
    $y imagesy($ih) - imagefontheight($fontsize) * 1.2;
             
    imagestring($ih$fontsize$x$y$text$color);
             
    imagejpeg($ih$dir.basename($file'.'.$fileinfo['extension']).'-watermark.jpg');
         }
    }
    closedir($dh);
    ?>
    jetzt soll der text aber beim upload meiner bilder schon mit dem text versehen werden. dachte das das in der function am besten gehen würde, hab nur keine idee, wie ich das einbauen kann...

    PHP-Code:
    function album_upload_picture($file$folder_name$filename)
    {
    global 
    $config;

    $filepath $config[fullpath].$folder_name// Change upload path in config.inc.php

    $destinationname $filepath.$filename;
    if (
    $file != "none")
     {
      if(
    move_uploaded_file($file$destinationname))
      {
        
    chmod($destinationname0644);
              return 
    $filename;
      }
      else
              return 
    false;
      }
    else
            return 
    false;

    könnte mir bitte wer helfen, bzw. mir einen kleinen denkanstoss geben.

    dank euch/dir,
    gruss
    bassek

  • #2
    ruf das script direkt nach dem erfolgreichen upload auf bzw. binde den schnipsel da ein ... die while-schleife brauchst du nicht, du kennst das bild ja ... mit getimagesize() kannst du dir den filetype holen ... noch den switch() anpassen und den rest lässt du, wie er ist
    Kissolino.com

    Kommentar


    • #3
      okay,
      hat geklappt.
      dank dir für den tipp.
      gruss
      bassek

      Kommentar


      • #4
        noch ein kleines prob:

        möchte nun eine eigene schrift nehmen,
        habs so probiert, bekomme aber immer fehlermeldungen wie z.B. wrong parameter count for imagestring usw.
        kann mir bitte wer weiterhelfen...
        danke
        bassek


        PHP-Code:
        $text 'COPYRIGHT 2004;
        $fontsize = 8;//1 - 5
        $ih = imagecreatefromjpeg($destinationname);

        $myfont=$config[fullpath]/mini.ttf;

        imagealphablending($ih, true);
        $color = imagecolorallocatealpha($ih, 0, 0, 0, 10); // Black
        $x = (imagesx($ih) - strlen($text) * imagefontwidth($fontsize)) / 2;
        $y = imagesy($ih) - imagefontheight($fontsize) * 1.5; // position unten
        imagestring($ih, $fontsize, $x, $y, $text );


        imagejpeg($myfont, $ih, $destinationname); // hier bzw so klappts nicht 

        Kommentar


        • #5
          du must auch imagettftext() nehmen, da kannst du dir auch gleich anschauen, was imagestring() erwartet
          Kissolino.com

          Kommentar


          • #6
            okay,
            dank dir wurzel.

            hab da nochmal ne prinzipelle frage:

            habe imagettftext() hier im forum immer nur in verbindung
            mit Header ("Content-type: ....
            $im = imagecreate (400, 30);
            usw gesehen.

            ist es also möglich imagettftext in meiner function zu benutzen?
            gruss
            und nochmals danke
            bassek

            Kommentar


            • #7
              den header benötigst du nur, wenn du das bild "im flug" generierst und
              ausgibst, du schreibst es auf die platte ... und ja, du kannst die fkt auch in
              deiner fkt verwenden.
              Kissolino.com

              Kommentar


              • #8
                hallo wurzel, hallo forum,

                komme einfach nicht von der stelle:
                habe die funktion 1(bild verkleinern), die die bilder verkleinert, an dieser
                stelle sollte auch die funktion 2 (copyright draufpacken) greifen.
                bekomme es aber nicht hin, das er beides macht, geschweige denn, das er nur die copyright-funktion ausführt.

                AUF DIE RESIZE-FUNCTION KANN ICH VERZICHTEN - da die bilder schon in
                der passenden grösse hochgeladen werden, aber das copyright MUSS mit rein.

                ersetze ich die resize-funktion durch die copyright-funktion,
                bekomme ich fehlermeldungen wie:

                Warning: imagealphablending(): supplied argument is not a valid Image resource in /home/ ......
                Warning: imagecolorallocatealpha():.....
                usw.

                Kann mir "bitte bitte bitte" wer konstruktiv damit weiterhelfen,
                doktor jetzt schon min- 8 stunden daran rum, ohne nennenswerte ergebnisse zu bekommen...
                gruss
                bassek

                funktion 1:
                PHP-Code:
                // Function for imageresizeing. Used to make thumbnails
                function album_resizeImage($src_file$dest_file$newWidth$method)
                {
                 
                // find the image size
                 
                $imginfo = @getimagesize($src_file);
                 if (
                $imginfo == NULL)
                  return 
                false;

                 
                // height/width
                 
                $srcWidth $imginfo[0];
                 
                $srcHeight $imginfo[1];

                 
                $ratioWidth $srcWidth/$newWidth;
                 
                $ratioHeight 0;
                 
                $destWidth $newWidth;
                 
                $destHeight $srcHeight $ratioWidth;

                 
                // Choose method for thumb creation

                 
                switch($method)
                 {
                   case 
                "im" :
                   {
                         
                // Resize the picture
                         
                exec("convert -quality 100 -antialias -sample \"".$destWidth."x".(int)$destHeight."\" \"$src_file\" \"$dest_file\"");
                         break;
                   }
                   case 
                "php" :
                   {

                         
                $src_img imagecreatefromjpeg($src_file);
                         
                //gd2
                         
                $dst_img imagecreatetruecolor($destWidth,$destHeight);
                         
                imagecopyresized($dst_img$src_img0000$destWidth,(int)$destHeight$srcWidth$srcHeight);
                         
                imagejpeg($dst_img$dest_file100); // Quality = 100
                         
                imagedestroy($src_img);
                         
                imagedestroy($dst_img);
                         break;
                   }
                   default:
                   {
                         
                // Resize the picture
                         
                exec("convert -quality 100 -antialias -sample \"".$destWidth."x".(int)$destHeight."\" \"$src_file\" \"$dest_file\"");
                         break;
                   }
                 } 
                // End switch


                 
                return $dest_file;

                PHP-Code:
                $ih imagecreatefromjpeg($destinationname);

                $text 'COPYRIGHT 2004;
                $fontsize = 1;//1 - 5

                $ih = imagecreatefromjpeg($destinationname);
                imagealphablending($ih, true);
                $color = imagecolorallocatealpha($ih, 0, 0, 0, 10); 
                $x = (imagesx($ih) - strlen($text) * imagefontwidth($fontsize)) / 2;
                $y = imagesy($ih) - imagefontheight($fontsize) * 1.5; 
                imagestring($ih, $fontsize, $x, $y, $text, $color);
                imagejpeg($ih, $destinationname); 

                Kommentar


                • #9
                  zeig mal bitte, wie und wo du den copyright-part eingebunden hast.
                  Kissolino.com

                  Kommentar


                  • #10
                    hi wurzel,

                    nicht wegschreien, kanns halt nicht...
                    (ist der part, ab dem entschieden wird //gd2 zu benutzen,
                    hab versucht die beiden teile zu einem zusammenzufassen)

                    PHP-Code:
                    $src_img     imagecreatefromjpeg($src_file$destinationname);

                    $text 'BlubBlah';
                    $fontsize 1;//1 - 5

                    imagealphablending($src_imgtrue);
                    $color imagecolorallocatealpha($ih00010); // Black
                    $x = (imagesx($src_img) - strlen($text) * imagefontwidth($fontsize)) / 2;
                    $y imagesy($src_img) - imagefontheight($fontsize) * 1.5// position unten
                    imagestring();

                     
                    $dst_img imagecreatetruecolor($destWidth,$destHeight);
                     
                    imagecopyresized($dst_img$src_img0000$destWidth,(int)$destHeight$srcWidth$srcHeight);
                     
                    imagejpeg($destinationname$dst_img$dest_file$ih$fontsize$x$y$text$color100);
                     
                    imagedestroy($src_img);
                     
                    imagedestroy($dst_img);
                     break;
                     
                       }
                       default:
                       {
                             
                             
                    exec("convert -quality 100 -antialias -sample \"".$destWidth."x".(int)$destHeight."\" \"$src_file\" \"$dest_file\"");
                             break;
                       }
                     } 
                     return 
                    $dest_file;

                    Kommentar


                    • #11
                      doch, ich schrei gleich ... *grr* ...

                      jetzt schaust du 'huschhuschdiewaldfee' ins manual und liest nach, was
                      1. imagecreatefromjpeg() an parametern erwartet
                      2. prüfst du mal nach, ob du auch wirklich immer auf dein resource-img zugreifst
                      3. imagealphablending() benötigst du afaik nur wenn du 2 bilder mischen willst
                      4. imagefontwidth/height ohne schriftartangabe scheint irgendwie falsch
                      5. imagestring() erwartet parameter => manual

                      wenn du 1-5 abgearbeitet hast, begrenzt du das ganze auf das nötigste
                      und bringst erstmal die teilstücke zum laufen ... dann sehen wir weiter.

                      btw: wäre es nicht besser, den copyright-vermerk NACH dem resizen aufzulegen?
                      Kissolino.com

                      Kommentar


                      • #12
                        oki,
                        denke du hast autoverspottung mal extra auf off geschaltet,
                        arbeite die tipps ab, meld mich dann nochmal...
                        dank dir,
                        gruss
                        b.

                        Kommentar

                        Lädt...
                        X