Wasserzeichen php

Hallo. Ich habe ein Uploadscript, wo es den Besuchern meiner Homepage möglich ist, ein Bild hochzuladen. Dabei sollten sie ihren Namen angeben. Nun möchte ich, das der Name automatisch als Wasserzeichen auf dem Bild erscheint. Vorher der Text. Bild wurde hochgeladen von: Name! Das sollte dann in einer von mir vorbestimmten Textgröße und Farbe geschehen. Ist das möglich? Hier mein Uploadscript

<?php if(isset($_POST["name"]))
{ $name = $\_POST["name"]; } $zielordner='upload/'; // ggf. Schreibrechte (CHMOD) erteilen! $upload\_limitieren=0; // mögliche Werte 0 und 1 (aus/an) $upload\_groesse=500; // in Kilobyte $mailsenden=1; // mögliche Werte 0 und 1 (aus/an) $emailadresse='[[email protected]](mailto:[email protected])'; $betreff='Neuer Upload'; $captcha\_verwenden=1; // mögliche Werte 0 und 1 (aus/an) $ip\_sperre=0; // mögliche Werte 0 und 1 (aus/an) $ip\_sperrzeit=10; // in Minuten $erlaubte\_dateiendungen=array('jpg','jpeg','gif','png'); $erlaubte\_mimetypen=array("text/plain","image/pjpg","image/pjpeg","image/gif","image/jpg","image/peng","image/jpeg","image/bmp","image/x-windows-bmp","image/tiff","image/x-tiff","application/plain", "application/x-photoshop","application/octet-stream","application/postscript","application/xms-word","application/mspowerpoint","application/powerpoint","application/vnd.ms-powerpoint","application/x-mspowerpoint","application/excel","application/x-excel","application/vnd.ms-excel","application/x-msexcel","application/zip","application/x-zip","application/x-compressed","application/x-zip-compressed","audio/mid","audio/mp3","application/x-winamp-plugin","interface/x-winamp-skin","audio/x-mp3"); $e[0]="Uploadfehler: Die erlaubte Dateigröße $upload\_groesse kb ist überschritten"; $e[1]="Uploadfehler: Die Dateiendung ist nicht erlaubt."; $e[2]="Uploadfehler: Der Mime-Typ der Datei ist fehlerhaft oder wird nicht unterstützt."; $e[3]="Beim Upload ist ein Fehler aufgetreten."; $e[4]="Uploadfehler: Keine Datei ausgewählt oder unbestimmter Fehler aufgetreten"; $e[5]="Der Sicherheitscode (Captcha) ist nicht korrekt"; $e[6]="Die IP-Sperre ist für $ip\_sperrzeit Minuten aktiv."; $e[200]="Der Upload war erfolgreich. Dein Bild wird nach erfolgreicher Prüfung freigeschalten. Du wirst in 3 Sekunden weitergeleitet. Sollte das nicht funktionieren, klicke bitte auf zurück."; $datum=date("d.m.Y"); $uhrzeit=date("H:i"); $ausgabe=''; if($captcha\_verwenden==1){ session\_start(); if(isset($\_POST['cap'])){$eingabe=mig($\_POST['cap']); if($eingabe=="" || $eingabe!=$\_SESSION['cod']){$fehler=1; $ausgabe=$e[5].' ';}} } //endcaptchaprüfung if($ip\_sperre==1){ $ip\_sperrzeit\_sec=$ip\_sperrzeit\*60; // Ordner ipsperre durchscannen $oeffnevz = openDir('ipsperre'); while($filename = readDir($oeffnevz)){ if($filename != "." && $filename != ".."){ // datei entfernen if(file\_exists('ipsperre/'.$filename)){$tsofthefile=filemtime('ipsperre/'.$filename)+$ip\_sperrzeit\_sec; // fileatime funkt. scheinbar bei MS nicht richtig daher filemtime if($tsofthefile';} //speichern (erst nach erfolgreichem Upload) /\* $nix=''; $iplog = fopen('ipsperre/'.$ip1, "w+"); fwrite($iplog, $nix); fclose($iplog); \*/ } } //endipsperre if(!isset($fehler)){ $uploadresult=dotheupload('uploadfile', $zielordner, $upload\_limitieren, $upload\_groesse, $erlaubte\_dateiendungen, $erlaubte\_mimetypen, $e, $ip\_sperre); ## das dotheupload spuckt Array aus ## [0] wert 0 = Feld nicht gefüllt, kein Upload vorgenommen wert 1= Upload vorgenommen ## [1] wert 0 = Upload nicht erfoglreich wert 1= Upload erfolgreich ## [2] pfad und dateiname ## [3] string mit gesammelten Fehlermeldungen ## [4] Dateiendung (ohne Punkt) #print\_r($uploadresult); if($uploadresult[0]==1){//Uploaddatei vorhanden if($uploadresult[1]==0){$ausgabe.=$uploadresult[3];} else{ ## Mailsenden if($mailsenden==1 && $emailadresse!="" && $betreff!=""){ $mailtext=" Upload ausgeführt am $datum, $uhrzeit Uhr Datei: $uploadresult[2] Von: $name "; @mail($emailadresse, $betreff, $mailtext, "\nFrom: $emailadresse "); # manche Provider fordern aus Spamschutzgründen einen Zusatz (-f) im Mailbefehl. Sollte der # Mailversand trotz mailsenden=1 nicht funktionieren, entfernen Sie das Rautesymbol (#) vor dem # folgenden Mailbefehl: # @mail($emailadresse, $betreff, $mailtext, "\nFrom: $emailadresse ","-f $emailadresse"); /\* $testmail = fopen("mail.txt", "w+"); fwrite($testmail, $mailtext); fclose($testmail); \*/ } //endmailsenden $ausgabe.=$e[200];} }else{$ausgabe.=$e[4];} } //Fehler bei Captcha oder IP vorhanden echo $ausgabe; echo ' [zurück](javascript:history.back();) '; function dotheupload($feldname, $zielpfad, $upload\_limitieren, $size\_kb, $allowed\_endings=array(), $from\_mime=array(), $e=array(),$ip\_sperre){ $errnumbers=''; $ucffeldname=ucfirst($feldname); if($upload\_limitieren==1){ //Limitierung eingeschaltet if($\_FILES[$feldname]['size'] \> (1000\*$size\_kb)){$errnumbers.=$e[0].' '; $fehler=1;} } if(!$\_FILES[$feldname]['name']){$fehler=1; $interner\_hinweis=0; /\* Uploadfeld nicht gefüllt \*/ }else{ $interner\_hinweis=1;} if(!$\_FILES[$feldname]['error'] && !isset($fehler)){ // $endung = strrchr($\_FILES[$feldname]['name'],'.'); // sucht das letzte Vorkommen e. Punktes $endung\_mp = strtolower($endung); // Endung mit Punkt $endung = str\_replace(".", "", strtolower($endung)); // Punkt weg $mime = $\_FILES[$feldname]['type']; ## Prüfung ob erlaubte Dateiendung okay geht if(!in\_array($endung, $allowed\_endings)){$errnumbers.=$e[1].' '; $fehler=1;} if(!in\_array($mime, $from\_mime)){$errnumbers.=$e[2].' '; $fehler=1;} $zielname=str\_replace($endung\_mp, "", $\_FILES[$feldname]['name']); ## Sonderzeichen rausfiltern $zielname= strtolower(preg\_replace('/[^a-zA-Z0-9\_.+-]/', '', $zielname)); $pfile=$zielpfad.$zielname.'.'.$endung; if(!isset($fehler)){ ## falls vorhanden, suffix dran, wieder prüfen $i=0; while(file\_exists($pfile)){ $pfile=$zielpfad.$zielname.'\_'.$i.'.'.$endung; $i++;} ## ODER ## checken ob eine so benannte datei schon existiert #if(file\_exists($pfile)){$errnumbers.=$e[3].' '; $fehler=1;} } if(!isset($fehler)){ ## uploadvorgang @move\_uploaded\_file($\_FILES[$feldname]['tmp\_name'], $pfile); @chmod($pfile, 0644); ## datei exisitert nicht? if(!file\_exists($pfile)){$errnumbers.=$e[3].' '; $fehler=1;} ## wenn Datei exitiert, aber Dateigröße 0Byte, dann weglöschen und ERROR ausgeben. if (get\_size($pfile)=="0"){@unlink($pfile); $errnumbers.=$e[3].' '; $fehler=1; } } // wenn bis hierher kein Fehler dann alles roger! if(!isset($fehler)){$result=1; session\_start(); session\_unset(); session\_start(); if($ip\_sperre==1){ $ip1=$\_SERVER['REMOTE\_ADDR']; if($ip1==""){if(getenv(HTTP\_X\_FORWARDED\_FOR)){ $ip=getenv('HTTP\_X\_FORWARD\_FOR');}else{$ip=getenv('REMOTE\_ADDR');}} if($ip1!=""){$nix=''; $iplog = fopen('ipsperre/'.$ip1, "w+"); fwrite($iplog, $nix); fclose($iplog); }} } else {$result=0;} } $ergebnisse=array( '0' =\> $interner\_hinweis, '1' =\> $result, '2' =\> $pfile, '3' =\> $errnumbers, '4' =\> $endung ); return $ergebnisse; } //endfunction function get\_size($path) { if(!is\_dir($path))return filesize($path); $dir = opendir($path); while($file = readdir($dir)) { if(is\_file($path."/".$file))$size+=filesize($path."/".$file); if(is\_dir($path."/".$file) && $file!="." && $file !="..")$size +=get\_size($path."/".$file); } return $size; } function mig($get){ $get=htmlentities(strip\_tags($get)); $get=trim($get); return $get;} ?\> Danke für dei Hilfe MfG, Nico

Hi naich78
Ja das ist möglich.
Schau dir mal dazu http://de.php.net/image an.

Dort findest du alles was du brauchst.

Die Schriftart die du einbinden willst mußt du hochladen.

Gruß Lamer

Danke. Es sind sicherlich ein paar schöne sachen bei, aber nicht annähernd, was ich suche. Danke für die Mühe

Gruß, Nico

Hi
Sicher das das so ist?
Also ich glaube da steht alles was du brauchst.

  1. Mußt du herausfinden was das für ein Bild ist was hochgeladen worden ist (png, jpg, gif … ) das machst du z.B. mit gd_info()

  2. Mußt du dir einen Bezeichner für das Hochgeladene Bild und dessen Format holen. Das machst du mit imagecreatefromjpg(), imagecreatefrompng(), imagecreatefromgif() usw. je nachdem was für ein Bild hochgeladen worden ist.

  3. Nach dem du das hast kannst du deinen Text mit deiner Schrift auf dem Bild positionieren. Dies machst du mit imagestring(). Vergiss aber nicht vorher den Font den du haben willst zu wählen mit imagefttext() und dessesn Farbe mit ImageColorAllocate();

  4. nun mußt du das bild nur noch anzeigen oder ausgeben in dem von dir gewünschten Format. imagepng(), imagejpg(), imagegif() helfen dabei.

  5. Den Bezeichner zerstören imagedestroy();

Fertig. Schon hast du ein Bild mit Schrift wo vorher keine war.

Steht alles in dem Link den ich dir gegeben habe.
Gruß Lamer

1 Like

Danke für die Ausführliche Hilfe. Ich werde mich sofort an die Verarbeitung ranmachen. Hoffe es klappt. Danke

Gruß, Nico