mysqldumper
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 03.01.2005, 10:11   #1
TP-Supporter
 
Benutzerbild von halla
 
Registriert seit: Jul 2002
Ort: Frankfurt/M.
halla ist auf einem guten Weg

zwei Bilder mit PHP überlagern lassen


hallo alle zusammen,

ich arbeite derzeit an einer klasse, die alle angelegenheite rund um vom user hochgeladende bilder managen soll (validieren, speichern, größenänderungen, komprimieren usw.)

u.a. soll es auch die möglichkeit geben, die bilder mit einem gege. Textstring zu versehen, z.B. einem Copyright o.ä.

dazu habe ich mit eine kleine Methode geschrieben, die ein geg. Bild öffnet,
ein 2tes Bild mit einem Textstring generiert und danach beide Bilder "ineinander" kopiert und wieder speichert.

Folgendes kam dabei heraus:

PHP-Code:
        /**
        * AddWatermark
        * platziert einen geg. Textstring in geg. Bilddatei
        */
         
function AddWatermark($SrcImgPath,$TxtString)  {

                 
/* Allg. Variablen */
                 
$SrcImgPath "/www/_Testdir_local/image-process/uploaded_resized/_X_20041231164330_CIMG0005.JPG";
                 
$FontType imageloadfont('proggyclean.gdf');
                 
$PaddingHeight 4;
                 
$PaddingWidth 8;

                 
/* Abmessungen d. Wasserzeichens festlegen */
                 
$StringWidth imagefontwidth($FontType) * strlen($TxtString)+$PaddingWidth;
                 
$StringHeigth imagefontheight($FontType)+$PaddingHeight;

                
/* Text- und Hintergrundfarbe fuer Wasserzeichen */
                
$StrImg imagecreate($StringWidth,$StringHeigth);
                 
$BackColor imagecolorallocate($StrImg,174,171,182);
                 
$TxtColor imagecolorallocate($StrImg,255,255,255);

                 
/* Handler d. Textbildes mit Text versehen  */
                 
imagestring($StrImg,$FontType,$PaddingWidth/2,$PaddingHeight/2,$TxtString,$TxtColor);

                 
/* Handler vom Orginalbild erstellen */
                 
$SrcImg imagecreatefromjpeg($SrcImgPath);

                 
/* Aus beiden Handlern ein Bild machen (StrImg in SrcImg einkopieren) */
                
imagecopymerge($SrcImg,$StrImg,0,0,0,0,$StringWidth,$StringHeight,100);

                
/* Neues Bild (Orginalbild mit Beschriftung) speichern */
                 
imagejpeg($SrcImg,"/www/_Testdir_local/image-process/uploaded_resized/TEST3.JPG");

         } 
// function AddWatermark 
Pfade u.ä. habe ich zum Testen mal hartcodiert.
Aber irgendwas stimmt nicht, das "Ausgabebild" TEST3.JPG besteht leider nur aus einer Kopie des Orginalbildes, mehr nicht. Da ist kein Textstring drin. Wenn ich mir aber den Textstring $StrImg als Bild ausgeben lasse, ist es korrekt.
Beide Bilder (Textstring und Kopie d. Orginalbildes) werden also richtig erzeugt.
Ich vermute mal, es hakt irgendwo bei imagecopymerge.
Bildhandler verwechselt? Falscher Gebrauch der Funktion? Fehlermeldungen bekomme ich zumindest keine. imagecopy() statt imagecopymerged klappt übrigens auch nicht :-(

vielleicht weiß jemand von euch rat?
Vielen Dank im voraus,

Grüße,
Daniel

P.S.: Nutze die GD-Lib2.0, Aufruf der o.g. Methode mit $image -> AddWatermark(NULL,"Ich bin ein Teststring"); - daran sollte es also nicht liegen (ja ich erzeuge einen String ;-))
__________________
Fernsehen hab ich mir abgewöhnt. Verblöden kann ich auch im Internet.
www.RealityOnTheRocks.com
halla ist offline   Mit Zitat antworten


Alt 03.01.2005, 23:22   #2
TP-Veteran
 
Benutzerbild von jonemo
 
Registriert seit: Dec 2002
Ort: london
jonemo macht sich hier sehr viel Mühe
also ich finde auch keinen fehler, weil ich mit den funktionen nicht per du bin, aber warum schreibst du den text nicht direkt rein ins bild?
__________________
the daily london photo
jonemo ist offline   Mit Zitat antworten
Alt 03.01.2005, 23:41   #3
TP-Supporter
 
Benutzerbild von halla
 
Registriert seit: Jul 2002
Ort: Frankfurt/M.
halla ist auf einem guten Weg
hi,

im prinzip mache ich ja genau das - ich erzeuge zuerst das bild mit dem text, und will dann beide bilder zu einem "verschmelzen".

damit schreibe ich den Text ja schon "direkt" ins Bild.
Das ich vorher den Text in "Bildform" erzeugen muss, darum komme ich nicht herum.
Eine Funktion zum "direkten" Beschriften von Bildern ist mit nicht bekannt
(bzw. eigentlich schon: imagestring(), aber genau die benutze ich ja auch ;-))

lass mich da aber zu gern eines besseren belehren?

Grüße,
Daniel
__________________
Fernsehen hab ich mir abgewöhnt. Verblöden kann ich auch im Internet.
www.RealityOnTheRocks.com
halla ist offline   Mit Zitat antworten
Alt 04.01.2005, 19:07   #4
TP-Supporter
 
Benutzerbild von halla
 
Registriert seit: Jul 2002
Ort: Frankfurt/M.
halla ist auf einem guten Weg
kann mir den keiner weiterhelfen?
es muss irgendeine kleinigkeit seinn an der es scheitert...
__________________
Fernsehen hab ich mir abgewöhnt. Verblöden kann ich auch im Internet.
www.RealityOnTheRocks.com
halla ist offline   Mit Zitat antworten
Alt 04.01.2005, 22:20   #5
TP-Insider
 
Registriert seit: Jun 2001
Ort: Berlin
deck16 ist auf einem guten Weg
Könnte es vielleicht am $StrImg Handler liegen.
Du weist den Handler nur hier
$StrImg = imagecreate($StringWidth,$StringHeigth);
zu.
Du änderst das Bild zwar, vielleicht fehlt aber die nochmalige Zuweisung.

Vielleicht mal so probieren:
$StrImg =& imagecreate($StringWidth,$StringHeigth);

oder so:
$StrImg = imagestring($StrImg,$FontType,$PaddingWidth/2,$PaddingHeight/2,$TxtString,$TxtColor);


oder das Bild einfach abspeichern und mit einem neuen Händler öffnen.
__________________
<table> was my first love and it will be my last
deck16 ist offline   Mit Zitat antworten
Alt 05.01.2005, 03:00   #6
TP-Supporter
 
Benutzerbild von halla
 
Registriert seit: Jul 2002
Ort: Frankfurt/M.
halla ist auf einem guten Weg
hi deck16,

daran lags leider auch nicht - es hatte irgendwas mit der berechnung der größe des schriftbildes zu tun....
hab es stück für stück auseinandergenommen.

die fertige methode sieht jetzt so aus:
PHP-Code:
    /**
    * AddTextWatermark
    * platziert einen geg. (einzeiligen) Textstring in geg. (JPG)Bilddatei
    */
         
function AddTextWatermark($SrcImgPath,$TxtString)    {

             
/* Allg. Variablen */
         
$FontType 'proggyclean.gdf';
             
$PaddingHeight 4;
             
$PaddingWidth 8;
                  
$transparency 80;
                  
$RGBValuesBG = array(174,171,182);
         
$RGBValuesFont = array(255,255,255);

         
/* Pruefen, ob Font vorhanden und Laden */
                  
if(file_exists($FontType))    {
                 
$FontType imageloadfont($FontType);
                  } else {
                      return    
FALSE;    }

             
/* Abmessungen d. Wasserzeichens festlegen */
             
$StringWidth imagefontwidth($FontType) * strlen($TxtString)+$PaddingWidth;
             
$StringHeigth imagefontheight($FontType) + $PaddingHeight;

             
/* Text- und Hintergrundfarbe,Handler fuer Wasserzeichen */
             
$StrImg imagecreate($StringWidth,$StringHeigth);
             
$BackColor imagecolorallocate($StrImg,RGBValuesBG[0],RGBValuesBG[1],RGBValuesBG[2]);
             
$TxtColor imagecolorallocate($StrImg,$RGBValuesFont[0],$RGBValuesFont[1],$RGBValuesFont[2]);

             
/* Handler d. Textbildes mit Text versehen  */
             
imagestring($StrImg,$FontType,$PaddingWidth/2,$PaddingHeight/2,$TxtString,$TxtColor);

             
/* Handler vom Orginalbild erstellen */
             
$SrcImg imagecreatefromjpeg($SrcImgPath);

             
/* Aus beiden Handlern ein Bild machen (StrImg in SrcImg einkopieren) */
             
imagecopymerge($SrcImg,$StrImg,0,0,0,0,$StringWidth,$StringHeigth,$transparency);

             
/* Neues Bild (Orginalbild mit Beschriftung) ueberschreiben */
             
imagejpeg($SrcImg,$SrcImgPath);

         } 
// function AddTextWatermark 
und das klappt ! Yeah !
__________________
Fernsehen hab ich mir abgewöhnt. Verblöden kann ich auch im Internet.
www.RealityOnTheRocks.com
halla ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
zwei Bilder mit PHP überlagern lassen zwei Bilder mit PHP überlagern lassen
« PHP lernen! | [MySQL] LOAD DATA LOCAL INFILE »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
zwei bilder ineinander verlaufen lassen jhaustein Fireworks 23 08.12.2005 18:42
Apache 2.x mit php, mysql und phpmyadmin unter WinXP inst. Ray Betriebssysteme 2 14.10.2004 17:53
Bilder drehen mit GD TobiasKa Traum-Dynamik 1 25.12.2002 22:25
PHP mit .mdb? oder nur MySql hnes Traum-Dynamik 11 13.11.2002 16:13
Zwei Bilder ineinander fließen lassen (Verlauf) MoMo Fireworks 22 25.03.2002 12:56


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:45 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67