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

Sorry,

da kann ich leider nicht helfen.

Viele Grüße
sendet
Herbert

Ok, trotzdem Danke

Gruß, Nico

Hi,

Generell ist sowas kein problem, du musst nur ein neues Bild der gleichen Groesse erstellen, das alte reinkopieren und deinen Text drueberlegen und speichern.

Wuerde dir da gerne genauere Hilfestellung zu geben , nur bin ich schon zu lange aus PHP raus :smile: Kinder sind stressig :wink: aber es gibt definitiv einfache befehle dafuer, sollte sich im Prinzip in 5-10 Zeilen machen lassen.

MfG
Sascha

Hallo,
ich seh jetzt grad nicht, dass du schon probiert hast, was auf dem Bild einzutragen. Du brauchst dafür die Image-Funktionen http://www.selfphp.de/funktionsuebersicht/image_funk…

Hier ein Beispiel (Kopie aus nem Script von mir)

$neuesBild=ImageCreateFromJPEG($dest); //dest ist ein Pfad vom hochgeladenen Bild

$hoehe = imagesy($neuesBild); //höhe vom bild
$start_h = $hoehe - 25; //Startwert von unten
$breite = imagesx($neuesBild); //breite vom bild

$text = „www.domain.de“; //wunschtext

$textbreite = imagefontwidth ( 5 ) * strlen ( $text ); //buchstabenbreite 5 mal textlänge
$start_b = $breite - $textbreite - 20; //Startwert von rechts

$farbe = imagecolorallocate ( $neuesBild, 255, 255, 255 ); //farbe festlegen

imagestring ( $neuesBild, 5, $start_b, $start_h, $text, $farbe ); //text aufs bild einfügen

ImageJPEG($neuesBild,"$dest"); //Datei erstellen

Weitere Infos siehe oberen Link :smile:

Hallo Snowder

Ich habe Deine Angaben bei mir eingegeben. Nun erhalte ich Fehlermeldungen, das der Teil nich Valide ist. Sicher habe ich es falsch eingebunden.

Trotzdem Danke

Welche Fehlermeldungen hast du denn?

Hast du auch (check in der PHPInfo()) die ganzen Grafikunterstützungen z.B. gd installiert?

Hallo, naich78 (nico)

leider habe ich nicht genügend programmierkenntnisse um so etwas zu lösen und im Internet findet man nur scripte wo beim upload ein vorgegebenes Bild als wasserzeichen eingefügt wird. Aber das vorher der Name eingegeben wird und dieser dann als Wasserzeichen erscheint ist wohl eine Herausforderung… evtl findest du ja einen „PHP-Freak“ der sowas proggen kann. Ich muss hier leider passen… wünsche dir aber viel Glück und Erfolg bei der Realisierung deines Vorhabens…

Gruß Andy

Hi Andy

Trotzdem danke für die Antwort. Bin zwar noch nicht fündig geworden, aber einige „PHP-Freaks“ haben mir schon gute Ansatzpunkte gegeben.

Gruß, Nico

Hi! Sorry, aber kann ich derzeit nicht beantworten!

-(