Adventure,PHP,Framework,PageController,FrontController,Pattern,Objektorientierung,OO,Software,Design,Wiederverwendbarkeit,UML,Tutorial,Benchmark,ausgezeichnete Performance

Suche:    
Downloads  |  SVN!  |  Roadmap  |  Forum!  |  Bugtracking  |  Gästebuch  |  Backlinks!  |  Referenzen!  |  Sitemap  |  Impressum  
 
Deutsch | English Adventure PHP Framework  Bookmark @ Technorati Bookmark @ del.icio.us Bookmark @ Mr. Wong Bookmark @ Simpy Bookmark @ Google Bookmark @ Digg.com Adventure PHP Framework Seite 025_klassenreferenz_imagemanager drucken!

Klassen-Referenz - imageManager

Artikel bewerten:
Dieser Artikel wurde noch nicht bewertet. Bewerten Sie diesen Artikel als erstes!
Der imageManager implementiert Methoden zur Bearbeitung von Bildern. Hierbei werden sowohl JPG und GIF als auch PNG-Bilder unterstützt, sofern die PHP-GD-Library in den entsprechenden Version verfügbar ist. Der imageManager muss vor der Verwendung per
  import('tools::image','imageManager'); 
eingebunden werden. Um die Klasse verwenden zu können muss diese instanziiert werden. Lediglich die Methode showImageAttributes() kann statisch benutzt werden. Für die Bearbeitung von Bildern stehen folgende Methoden zur Verfügung:
  • setImageSize():
    Setzt die Ziel-Maße für das Bearbeiten von Bildern mit resizeImage().
  • generateThumbnail():
    Erzeugt ein Thumbnail nach der Nameskonvention {Bisherige Dateiname minus Endung}_thumb.{Endung} in einem übergebenen Ordner.
  • showImageAttributes() (statisch):
    Zeigt Bild-Attribute wie Breite, Höhe, Type u.s.w. an.
  • resizeImage():
    Vergrößert oder verkleinert ein gegebenes Bild unter Berücksichtigung eines Zieldateinamens.
  • setJPGQuality():
    Konfiguriert die Qualität eines JPG-Bildes während einer JPG-Komprimierung. Standard-Qualität ist 80%.
Ein typischer Anwendungsfall ist das Ausliefern von Bildern über eine PHP-Datei unter Angabe von Bildmaßen. Im folgenden Skript wird davon ausgegeben, dass dieses immer mit korrekten und vollständigen Parametern aufgerufen wird. Weitergehende Prüfungen sind nicht enthalten.
  // Einbinden des imageManagers
  
import('tools::image','imageManager');

  
// Gemeinsamen Bild-Basis-Pfad definieren
  
$imageBasePath '../pics';

  
// Cache-Ordner definieren
  
$imageCacheFolder '../pics_cache';

  
// Parameter 'image' lokal verfuegbar machen
  
$image = (string)$_REQUEST['image'];

  
// Pruefen, ob Datei existiert
  
if(file_exists($imageBasePath.'/'.$image)){

     
// Bildmasse holen
     
$ImageInfo imageManager::showImageAttributes($imageBasePath.'/'.$image);

     
// Breite setzen
     
$width = (int)$_REQUEST['width'];

     
// Hoehe setzen
     
$height = (int)$_REQUEST['hight'];

   
// end if
  
}
  else{
     
trigger_error('The file specified with the parameter \'image\' does not exist in the image
                    path \''
.$imageBasePath.'\'!',E_USER,ERROR);
     exit(
1);
   
// end else
  
}

  
// Cache-Key erzeugen
  
$cacheKey md5($image).'.'.$ImageInfo['Extension'];

  
// Cache prüfen
  
if(file_exists($imageCacheFolder.'/'.$cacheKey)){

     
// imageManager erzeugen
     
$iM = new imageManager($width,$height);

     
// Bild resizen und cachen
     
$cachedImage $iM->resizeImage($imageBasePath.'/'.$image,$imageCacheFolder,$cacheKey);

   
// end if
  
}


  
// ContentType zusammensetzen
  
switch($ImageInfo['Extension']){

     case 
'gif':
        
$ContentType 'image/gif';
        break;
     case 
'jpg':
        
$ContentType 'image/jpg';
        break;
     case 
'jpeg':
        
$ContentType 'image/jpg';
        break;
     case 
'png':
        
$ContentType 'image/png';
        break;
     default:
        
$ContentType 'application/octet-stream';
        break;

   
// end switch
  
}

  
// Header ausgeben
  
header('Content-Type: '.$ContentType);
  
header('Content-disposition: inline; filename="'.$image.'"');
  
header('Content-Transfer-Encoding: binary');
  
header('Content-Length: '.filesize($imageCacheFolder.'/'.$cacheKey));

  
// Bild ausgeben
  
@readfile($imageCacheFolder.'/'.$cacheKey);

  
// Ausgabe beenden
  
exit(); 

Kommentare

Bitte geben Sie Ihren Kommentar hier ein. Füllen Sie alle mit * gekennzeichneten Felder vollständig und korrekt aus. Um zum Artikel zurückzukehren klicken sie bitte hier. Zur Formatierung des Textes können folgende BBCode-ähnliche die Zeichen verwendet werden:
  • [f]..[/f]: fett
  • [k]..[/k]: kursiv
  • [u]..[/u]: unterstrichen
Hinweis: Formatierungszeichen in Name und E-Mail-Adresse werden nicht akzeptiert.

Name:*
E-Mail:*

Kommentar:


Bestätigungscode:*



Powered by WebRing.