Das Paket Image/Transform bietet sich an aus Bildern Thumbnails zu machen.
Bevor wir beginnen müssen wir über eine Factory Methode bestimmen welche Library wir verwenden wollen. Ich habe mich hier für GD entschieden, weil ich nicht die Funktionalität von ImageMagic benötige.
Dann können wir das Bild mit $it->load($Bild); laden. Mit scaleByLength wird die Länge der längsten Seite skaliert. Wir haben nun ein Thumb mit einer Länge von 100 px. Da wir aber ein quadratisches Thumbnail haben wollen, müssen wir noch mehr beschneiden. Das machen wir mit crop(). Ausserdem möchte ich, dass der Bildausschnitt etwas in die Mitte verschoben wird. Deswegen gebe ich noch den dritten und den vierten Parameter mit.
So, das war es schon fast. Nun wird noch geprüft, ob das Verzeichnis, in das das Bild gespeichert werden soll, existiert. Falls nicht wird es erstellt und mit den nötigen Rechten versehen. Als letztes wird der Speicher wieder freigegeben.
public function createThumb($File){
//create transform driver object
$it = Image_Transform::factory('GD');
$ret = $it->load($this->Path.$File);
if (PEAR::isError($ret)) {
print($ret->getMessage());
}
$ret = $it->scaleByLength(100);
if (PEAR::isError($ret)) {
print($ret->getMessage());
}
if($this->Quad){
$ret = $it->crop(80, 80, 10, 10);
if (PEAR::isError($ret)) {
print($ret->getMessage());
}
}
if(!is_dir ($this->Path."Thumbs/"))
mkdir($this->Path."Thumbs/", 0777);
//save it into a different file
$ret = $it->save($this->Path."Thumbs/".THUMB_SUF.$File);
if (PEAR::isError($ret)) {
print($ret->getMessage());
}
$it->free();
}