Bildupload > Verkleinern > in DB

Vielleicht kannst du ja dem Admin trauen, aber denk daran, dass das Internet kein Intranet ist, d.h. *jeder* hat Zugriff auf deine Webseite. Grundsätzlich ist es also möglich, dass irgendein x-beliebiger Hacker deine Seite mal auf Schwachstellen untersucht. Ich kenne persönlich ein kleineres Unternehmen (Webhoster), dessen Geschäftsführer auf Sicherheit mehr oder weniger sch***en, weil sie der Ansicht sind, Hacker würden sich für ihre Kundenserver ohnehin nicht interessieren. Jaja. Ihre Server wurden kürzlich angegriffen und "defaced". Sie hatten einfach nur Glück, dass der Hacker nichts gelöscht hat, sonst hätten sie ordentlichen Ärger mit ihren Kunden bekommen. So konnten sie es noch vor den meisten verheimlichen. Einbrechen konnte der Hacker übrigens ganz leicht, weil einer der beiden Chefs ein PHP-Skript so programmiert hatte, dass man ohne weiteres eigenen Code einschleusen konnte.

Zum Thema Uploadsicherheit empfehle ich dir nochmals die Lektüre der PHP-Dokumentation: http://www.php.net/manual/en/features.file-upload.php

-Gawayn
 
Zuletzt bearbeitet:
Sodele, ich habe es nun endlich auch geschafft aus meinen Codeschnipseln ein funktionstüchtiges Skript zu erzeugen was Termine in eine DB einträgt und das hochgeladene Bild in 2 Größen auf dem Server speichert. Nur ist das Problem das die Qualität nicht ganz hinhaut. Ich dachte wenn ich das nicht angebe wird die Originalqualität genommen.

Bild Original:
http://www.mediapilot.de/images/20060704/BILD_Belegungskarte-060101.jpg

Bild Hochgeladen
http://img528.imageshack.us/img528/63/10c54a39gm5.jpg

Skript dazu:
PHP:
					if($HTTP_POST_FILES['userfile1']['tmp_name'] <> 'none')
					{
						$maxheight	= 450;
						$thuheight	= 100;
						$file		= $HTTP_POST_FILES['userfile1']['name'];
						$temp		= $HTTP_POST_FILES['userfile1']['tmp_name'];
						$size		= getimagesize($temp);
						$height		= $size[1];
						$width		= $size[0];
						$path_parts = pathinfo($file);
						if($height < $maxheight)
		                {
		                    $maxheight = $height;
		                }
						$maxskal	= $height/$maxheight;
						$maxwidth	= intval($width/$maxskal);
						
						$thuskal	= $height/$thuheight;
						$thuwidth	= intval($width/$thuskal);
						
						$filename1	= $row['ID']. '.' .$path_parts["extension"];
						$dest1		= $path.$filename1;
				
						$filename2	= $row['ID']. '_thumb.' .$path_parts["extension"];
						$dest2		= $path.$filename2;
						
						$altesBild	= ImageCreateFromJPEG("$temp");
						
						$neuesBild	= imagecreate($maxwidth,$maxheight);
						imageCopyResized($neuesBild,$altesBild,0,0,0,0,$maxwidth,$maxheight,$width,$height);
						ImageJPEG($neuesBild,"$dest1");
						
						$neuesBild	= imagecreate($thuwidth,$thuheight);
						imageCopyResized($neuesBild,$altesBild,0,0,0,0,$thuwidth,$thuheight,$width,$height);
						ImageJPEG($neuesBild,"$dest2");
					}
 
Da gibts unterschiedliche Möglichkeiten die Qualität zu verbessern.
Bei ImageJPEG kannst du als 3. Parameter die JPEG Qualität hochdrehen.
Oder du steigst ganz auf ein anderes Format um. PNG (ImagePNG) hat gar kein Verlust. Ebenfalls hast du bei solchen detailreichen Bildern beim Skalieren einen Verlust. Mit imageantialias() könnte man da durch Antialiasing was raus bekommen. Für den Syntax am Besten mal in der PHP-Manual nachsehen.
 
Wenn du JPG-Dateien hochlädst und diese dann mit imagejpeg speicherst, erfolgt eine Rekomprimierung, welche im Falle von JPG also insgesamt zu zweimaligem Qualitätsverlust führt. Wenn man Bilder verkleinert, ist das nicht so schlimm, in allen anderen Fällen jedoch nicht so toll. Natürlich gibt es keine befriedigende Lösung für dieses Problem, denn wenn nun einmal JPG-Daten angeliefert werden, kann man an der bereits erfolgten verlustbehafteten Komprimierung nichts mehr ändern.
-Gawayn
 
Ich habe viel gegooglet und sogar was gefunden..

Ich habe "imagecreate" mit "imagecreatetruecolor" und " imageCopyResized" mit "imagecopyresampled" ersetzt. Und mit "ImageJPEG($neuesBild,"$dest2", $quality);" die Qualität auf 80 gesetzt. Jetzt werden die Bilder in einer vertretbaren Größe und guten Qualität erzeugt..

Thx!
 
Zurück