PictureLoader.php
Aus Programmers Guide
(Unterschied zwischen Versionen)
Roy (Diskussion | Beiträge)
(Die Seite wurde neu angelegt: „== Ein Bild ausgeben mit PHP == Das Script sucht in einem übergeben Original-Bild-Pfad nach einem Thumbnail Bild. Ist dieses nicht vorhanden, so versucht es di…“)
(Die Seite wurde neu angelegt: „== Ein Bild ausgeben mit PHP == Das Script sucht in einem übergeben Original-Bild-Pfad nach einem Thumbnail Bild. Ist dieses nicht vorhanden, so versucht es di…“)
Aktuelle Version vom 06:50, 6. Mai 2010
Ein Bild ausgeben mit PHP
Das Script sucht in einem übergeben Original-Bild-Pfad nach einem Thumbnail Bild. Ist dieses nicht vorhanden, so versucht es dieses zu erzeugen und auszugeben.
<?php //Aufruf: //Höhe und Breite bestimme ich vorher mit Javascript //Bsp. pictureLoader.php?file=U2FhbGV0&width=800&height=600&aktname=Bild%201 //das Script bekommt den Bildpfad base64 codiert übergeben //hat den Vorteil, dass wir nicht die Pfadnamen GET-tauglich machen zu müssen $file = base64_decode($_GET['file']); //Abfangen von groben Fehlern if(!isset($file) || $file==''){ echo"kein Bild uebergeben"; exit; } //Höhe-Breite-Fehler abfangen, wenn einer kein Javascript hat if(isset($_GET['height']) && $_GET['height'] != '' && $_GET['height'] != 0){ $max_height = $_GET['height']; }else { $max_height='800'; } if(isset($_GET['width']) && $_GET['width'] != '' && $_GET['width'] != 0){ $max_width = $_GET['width']; }else { $max_width='800'; } //pfad anlegen, wenn er nicht existiert if(!file_exists($path_to_pic_temp)){ mkdir($path_to_pic_temp) or die("fehler beim anlegen den temp-pfades!"); } $pfad_aktuell = $path_to_pic_temp.$_GET['aktname'].'/'; if(!file_exists($pfad_aktuell)){ mkdir($pfad_aktuell) or die("fehler beim anlegen den temp-bilderarchiv-pfades!"); } $tempimage = $pfad_aktuell.basename($file); if(file_exists($tempimage)){ //wenns das Bild gibt $image = imagecreatefromjpeg($tempimage); }else{ //wenn es nicht existent ist if(copy($pfad_zur_phpthumb.'?src='.$file.$phpthumb_zusaetze,$tempimage)){ //Ich versuche das Bild mit PHP-Thumb zu erzeugen $image = imagecreatefromjpeg($tempimage); }else{ //schägt auch dies Fehl...Fehlerbild erzeugen $image = imagecreatetruecolor(400,400); $col = imagecolordeallocate($image,255,255,255); imagestring($image,2,5,5,"fehler beim kopieren!",$col); } } // //so, wir haben also ein Bild, ob nun neu erzeugt oder ein Fehlerbild...wir haben ein Bild :) // //Bildgröße bestimmen list($width, $height, $image_type) = getimagesize($tempimage); //Verhältnis $x_ratio = $max_width / $width; $y_ratio = $max_height / $height; //Das Bild so berechnen, dass es nicht größer als der Monitor ist if( ($width <= $max_width) && ($height <= $max_height) ){ $tn_width = $width; $tn_height = $height; }elseif (($x_ratio * $height) < $max_height){ $tn_height = ceil($x_ratio * $height); $tn_width = $max_width; }else{ $tn_width = ceil($y_ratio * $width); $tn_height = $max_height; } //ein neues Bild mit richtiger Größe erzeugen $tmp = imagecreatetruecolor($tn_width,$tn_height); //dort dass aktuelle Bild reinkopieren imagecopyresampled($tmp,$image,0,0,0,0,$tn_width, $tn_height,$width,$height); //Ausgabe des Bildes header('Content-type: '.image_type_to_mime_type($image_type)); imageinterlace($tmp,1); //NULL heißt: nur ausgeben, nicht auf Server speichern //80 heißt: JPEG-Qualität imagejpeg($tmp,NULL,80); imagedestroy($image); imagedestroy($tmp); ?>