Moin Moin!
Ich habe eine PHP Bild Upload Funktion die das Bild ggf. dreht und auch ein Thumbnail erzeugt.
Manchmal kommt es vor dass das Original Bild mit voller Auflösung, jedoch nicht in voller Dateigröße auf dem Server gespeichert wird.
Original ist z.B. 6000 x 4000 Pixel groß und hat 8257 KB
Original auf dem Server ist auch 6000 x 4000 Pixel groß, hat aber nur 966 KB.
Manchmal klapp es auch und das Bild hat die richtige Größe.
Ich weiß nicht warum es mal geht und mal nicht geht :-(
Hier mal die Funktionen:
hier die Funktion image_rotation:
Und hier noch die Funktion image_resize:
Danke und schöne Grüße!
Ich habe eine PHP Bild Upload Funktion die das Bild ggf. dreht und auch ein Thumbnail erzeugt.
Manchmal kommt es vor dass das Original Bild mit voller Auflösung, jedoch nicht in voller Dateigröße auf dem Server gespeichert wird.
Original ist z.B. 6000 x 4000 Pixel groß und hat 8257 KB
Original auf dem Server ist auch 6000 x 4000 Pixel groß, hat aber nur 966 KB.
Manchmal klapp es auch und das Bild hat die richtige Größe.
Ich weiß nicht warum es mal geht und mal nicht geht :-(
Hier mal die Funktionen:
PHP:
$OriginalImage = $targetPath."orginals/".$Folder."/".$Name.".".$Extension;
if (move_uploaded_file($_FILES["image"]["tmp_name"], $OriginalImage)) {
// Wenn das original Bild gut auf dem Server angekommen ist, wird der Rest erledigt
// Bildverarbeitung: Bild ggf. drehen
if(isset($exifdata["Orientation"]))
image_rotation($OriginalImage);
// Erstelle nun die kleineren Versionen
image_resize($OriginalImage, $targetPath."thumbs/".$Folder."/".$ThumbName.".".$Extension, 290, 290);
}
hier die Funktion image_rotation:
PHP:
function image_rotation($file) {
GLOBAL $exifdata; // Die EXIF Daten wurden schon ausgelesen.
switch($exifdata["Orientation"]) {
case 8:
$dst_img = imagerotate(ImageCreateFromJpeg($file), 90, 0);
break;
case 3:
$dst_img = imagerotate(ImageCreateFromJpeg($file), 180, 0);
break;
case 6:
$dst_img = imagerotate(ImageCreateFromJpeg($file), -90, 0);
break;
}
if (isset($dst_img)) {
imagejpeg($dst_img, $file); // Ausgabe
imagedestroy($dst_img); // Löscht die temporär erstellten Bilder
}
}
Und hier noch die Funktion image_resize:
PHP:
// Diese Funktion erstellt eine verkleinerte Variante eines Bildes
function image_resize($source, $filename, $maxW, $maxH) {
list($w, $h) = getimagesize($source); // Größe auslesen
if ($h >= $w) {
$wn = round($w/($h/$maxH));
$hn = $maxH;
}
else {
$hn = round($h/($w/$maxW));
$wn = $maxW;
}
$dst_img=ImageCreateTrueColor($wn,$hn);
$src_img=ImageCreateFromJpeg($source);
ImageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $wn, $hn, $w, $h);
imagejpeg($dst_img, $filename, 65); // Ausgabe
// Löscht die temporär erstellten Bilder
imagedestroy($dst_img);
imagedestroy($src_img);
}
Danke und schöne Grüße!