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

Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.


Für diesen Artikel liegen aktuell keine Kommentare vor.


Powered by WebRing.