In einer eigenen 3er Erweiterung in C4 erstelle ich Thumbnails wie folgt:
PHP-Code:
$objFile = \FilesModel::findByPk($objItems->singleSRC);
$thumbnail = \Image::get($objFile->path, 300, 100, 'crop');
"crop" scheint der richtige Parameter für den wichtigen Teil zu sein. Nur bin ich leider noch nicht ganz zufrieden mit der "Wichtigkeit" des von Contao gewählten Ausschnittes. Nun gibt es ja in den Bildeinstellungen eines Themes einen sogenannten Zoomfaktor, wo Werte von 0 (wichtigen Teil ignorieren) bis 100 (zu 100% auf wichtigen Teil fokussieren) möglich sind. Dahinter steckt wohl die Funktion setZoomLevel der Image-Klasse. Nur leider gibt es nicht die Möglichkeit den Zoomfaktor Image::get als Parameter mitzugeben.
Beim Suchen im Core fand ich das:
PHP-Code:
$thumbnail .= ' ' . \Image::getHtml(\System::getContainer()->get('contao.image.image_factory')->create(TL_ROOT . '/' . rawurldecode($currentEncoded), (new ResizeConfiguration())->setWidth(320)->setHeight(40)->setMode(ResizeConfiguration::MODE_BOX)->setZoomLevel(100))->getUrl(TL_ROOT), '', 'style="margin:0 0 2px 0;vertical-align:bottom"');
Datei: vendor/contao/core-bundle/src/Resources/contao/widgets/FileSelector.php
Diese Zeile zu verstehen übersteigt mein Wissen als Hobbyprogrammierer.
Die Funktion getHtml bekommt wohl folgende vier Parameter:
- \System::getContainer()->get('contao.image.image_factory')->create(TL_ROOT . '/' . rawurldecode($currentEncoded)
- (new ResizeConfiguration())->setWidth(320)->setHeight(40)->setMode(ResizeConfiguration::MODE_BOX)->setZoomLevel(100))->getUrl(TL_ROOT)
- ''
- 'style="margin:0 0 2px 0;vertical-align:bottom"'
Mit den ersten beiden Parametern kann ich nicht viel anfangen. Ich denke Parameter 1 liefert den Pfad zum Originalbild. Meine Lösung
PHP-Code:
\System::getContainer()->get('contao.image.image_factory')->create(TL_ROOT.'/'. $objFile->path
führt zu der Fehlermeldung das das Image '' (also nichts) nicht gefunden wird.
Beim zweiten Parameter bekam ich eine Fehlermeldung, die Klasse ResizeConfiguration würde nicht gefunden werden. Es stand aber gleich ein Tip von app_dev.php dabei und nach Ergänzen von
PHP-Code:
use Contao\Image\ResizeConfiguration;
in meiner Klasse war dieses Problem behoben.
Zusammenfassend möchte ich wissen, wie ich ein Thumbnail mit einem von mir festgelegten Zoomlevel erstellen kann.
Lesezeichen