oli.s.
Threadersteller
Dabei seit: 08.01.2007
Ort: Lehre
Alter: 36
Geschlecht:
|
Verfasst Mo 12.11.2007 15:45
Titel
|
|
|
Danke erstmal für die vielen Antworten!
Also um nochmal genau zu zeigen wie ich vorgehe hab ich hier meinen Codeabschnitt:
Code: | <?php
}
if($_POST['submit']) {
//POST Daten abrufen
$alben = $_POST['alben'];
$dir = $files;
$file_type = $_FILES['upload']['type'];
$file_size = $_FILES['upload']['size'];
$file_name = $_FILES['upload']['name'];
$file_src_temp = $_FILES['upload']['tmp_name'];
//Filesize Grenze: 5MB
if($file_size <= 500000 && ($file_type=="image/jpeg" || $file_type=="image/jpg" || $file_type=="image/gif" || $file_type=="image/png")) {
//Bild abspeichern ------ später wieder löschen
if($file_src_temp != ""){
$saveimage = move_uploaded_file($file_src_temp, "bilder/temp/".$file_name);
}
if($saveimage) { $tempimage = "bilder/temp/".$file_name; }
//Imagegröße auslesen: nicht kleiner als 600 und nicht größer als 2000 Pixel ///// ############# AB HIER WEITER DIE IF ABFRAGEN !!!!!!!!!!!!!
$size = getimagesize($tempimage);
$breite = $size[0]; $hoehe = $size[1];
if($breite>2500 && $hoehe>2000) { echo"<span>Dein Bild ist zu groß!</span>";
exit;}
//Seitenverhältnisse beibehalten: Verkleinern
if($breite > $hoehe) {
//Querformat
$faktor = $breite/$hoehe;
$dst_breite = 150; $dst_hoehe = 150/$faktor; //Thumbnailgröße
$dst_breite_tall = 600; $dst_hoehe_tall = 600/$faktor; //Vergrößtertes Bild
}
if($hoehe > $breite) {
//Querformat
$faktor = $hoehe/$breite;
$dst_breite = 150/$faktor; $dst_hoehe = 150; //Thumbnail
$dst_breite_tall = 600/$faktor; $dst_hoehe_tall = 600; //Vergrößtertes Bild
}
//Imagegröße
//Auswahl, prüfen ob Size nicht zu groß und name
//Thumbnail erstellen
$fulldir_t = $dir."t/".$file_name; //Verzeichnis für Thumbnails
//Funktionsunterscheidung zwischen den Dateiendungen
switch($file_type) {
case "image/jpeg":
$source = imagecreatefromjpeg($tempimage); //Erstellt Abbild des Bilds für
break;
case "image/gif":
$source = imagecreatefromgif($tempimage);
break;
case "image/png":
$source = imagecreatefrompng($tempimage);
break;
}
$newimaget = imagecreatetruecolor($dst_breite, $dst_hoehe); //Legt neues Bild an, mit größe es Thumbnails - im Speicher
// resource dst, resource src, dsx,dstY, srcX, srcY, dstW, dstH, srcW, srcH
imagecopyresized($newimaget, $source, 0, 0, 0, 0, $dst_breite, $dst_hoehe, $breite, $hoehe); //Speichert das hochgeladene Bild in das Thumbnail
//Bild speichern
$fulldir_z = $dir.$file_name; //Verzeichnis des Bildes
$newimagez = imagecreatetruecolor($dst_breite_tall, $dst_hoehe_tall); //Legt neues Bild an, mit der neune Größe des vergrößerten Bildes - im Speicher
imagecopyresized ($newimagez, $source, 0, 0, 0, 0, $dst_breite_tall, $dst_hoehe_tall, $breite, $hoehe);
if( imagejpeg($newimagez, $fulldir_z) && //normales Bild speichern
imagejpeg($newimaget, $fulldir_t)) { //Thumbnail speichern
echo"<span>Dein Bild wurde gespeichert!</span>"; //Erfolgsausgabe
//Formular ausblenden
echo"<style type=\"text/css\"><!-- #new_image { display: none } //--></style>";
imagedestroy($newimaget); //Speicherabbild wieder löschen - Thumbnail
imagedestroy($newimagez); //Speicherabbild des normalen Bildes
imagedestroy($source); //Speicherabbild wieder löschen - Vergrößertes Bild was zur copy erstellt wird
//Temporäre Bilddatei löschen
$handle = opendir("bilder/temp");
while(false !== ($readtodelete = readdir($handle))){
if("bilder/temp/".$readtodelete == $tempimage) {
unlink("bilder/temp/".$readtodelete);
}
}
}
}
}
?> |
Also an meiner GD Version kanns nicht liegen. Ich habe PHP Version 5 und GD Version 2.0.28.
Ich benutze ja imagecreatetruecolor() und mit der Qualität hab ich auch schon auf 100% getestet, dort passiert das gleiche. Und ja, es wird wirklich ein kleineres Bild erzeugt und nicht mit HTML skaliert.
Hat jemand noch eine Idee?
Gruß Olli
|
|