WideImage PHP Bibliothek mit Yii Framework nutzen

Kürzlich bin ich auf die WideImage PHP Bibliothek gestoßen und bin begeistert von ihr.

In einem letzten Projekt habe ich das Yii Framework genutzt und dort die vorhandene Eweiterung „Image“ genutzt. Diese hat mir auch sehr gut gefallen, aber WideImage bietet noch mehr, ist sehr gut dokumentiert und wird aktiv gepflegt.

Vorrausetzung:

Einbindung von WideImage in ein Yii Projekt:

WideImage in protected Verzeichnis entpacken

Nach dem Runterladen von WideImage, legt man folgenden Ordner im Yii Projekt an: /protected/extensions/wideimage in den man alle WideImage Dateien entpackt.

CWideImageComponent.php erstellen

In /protected/extensions/wideimage/ erstellt man eine leere Datei CWideImageComponent.php und fügt folgenden Code in diese ein:

load($path);
	}

	public function loadFromString($data)
	{
		return WideImage::loadFromString($data);
	}

	public function loadFromHandle($handle)
	{
		return WideImage::loadFromHandle($handle);
	}
}

?>

Im groben habe ich dort lediglich die verschiedenen load-Methoden von WideImage gewrappt. Vor der Klassendefinition wird noch die WideImage Klasse importiert.

Einbindung in Yii

Man öffnet die produktiv-Konfigurationsdatei /protected/config/main.php und fügt folgende Einräge hinzu:

...
'components' => array(
   ...
   'WideImage'=>array(
	'class' => 'application.extensions.wideimage.CWideImageComponent',
  ),
  ...

Nutzung von WideImage in einer Controller Action

Ab jetzt ist WideImage einsatzbereit.
Mit folgendem Code würde ein Bild, das mit einem <input type="file" name="image"/> abgeschickt wurde, bearbeitet:

  $image = Yii::app()->WideImage->loadFromUpload('image');//($_FILES['image']['tmp_name']);
  $image->asNegative()->saveToFile('./media/negative_'.$_FILES['image']['name']);
  $image->asGrayscale()->saveToFile('./media/grayscale_'.$_FILES['image']['name']);

In diesem Fall würde ein hochgeladenes Bild, einmal negiert abgespeichert, und einmal als graustufen Bild. Im Produktiv Einsatz würde der Pfad zum Bilder Ablageort (hier /media) natürlich auch als Parameter in der /protected/config/main.php stehen.

In diesem Beispiel wird deutlich, das WideImage eine einmal erstellte Bild-Instanz nicht überschreibt. Die $image Variable behält immer das original Bild. Jeder Funktionsaufruf auf einem WideImage-Objekt gibt das neu erstellte Objekt zurück. Daher lassen sich einerseits hervoragend verschiedene Arbeitsschritte aneinanderhängen („chainen“) und wenn man zum Beispiel vom Original Bild drei Versionen braucht (groß/medium/klein), kann man diese alle aus der $image Variable generieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.