09. Januar 2017
upload hochladen bild jpg gif thumbnail vorschaubild grösse breite
Über Verzeichnisereignisse können beim Hochladen von Dateien z.B. Aktionen zum Verkleinern von Bilddateien für geringere Ladezeiten genutzt werden.
Die BASE wird standardmässig so ausgeliefert, dass über das Assets-Bildverzeichnis (z.B. /wAssets/img) ein Verzeichnisereignis für das Hochladen von Bildern genutzt wird. Die Aktion greift auf die Einstellung "Bildgröße beim Hochladen wenn nötig herunterrechnen" zurück, um ein Bild beim Hochladen auf die vordefinierte Breite herunterzurechnen (z.B. 1920 oder 1280 Pixel).
Das Herunterrechnen des Bildes findet dabei nur dann statt, wenn das Bild die angegebene Breite überschreitet.
Ab Weblication® CMS Version 9.x verwendet die Software einen neuen Datei-Uploader (siehe weiterführende Informationen unten), welcher Bilder schon vor dem Hochladen lokal verkleinert. Sollten Bilder in höherer Auflösung (z.B. 4000 Pixel Breite) in einem Verzeichnis benötigt werden, als allgemein in der Projektkonfiguration angegeben (z.B. 1920 px Breite), so können Sie das lokale Herunterrechnen über die Verzeichniseinstellungen (Register "Hochladen") auch deaktivieren. (siehe auch 1.a)
// WICHTIG:
// Die PHP-Tags sind nur in diesem Quelltext-Beispiel gesetzt und
// und dürfen im Ereignisfenster nicht gesetzt werden (siehe Screen)
// Beispiel: Auszug aus dem Verzeichnisereignis onAfterUpload von /wAssets/img
$widthResizeOnUpload = wVariables::getValue('resize_pictures_after_upload', wProject::getPathGlobal($eventData['projectPath']));
if($widthResizeOnUpload != ''){
if(preg_match("/gif|jpg|jpeg|png/i", wPathName::getFileExtension($eventData['filePath']))){
if(wImage::getWidth($eventData['filePath']) > $widthResizeOnUpload){
wImage::resize($eventData['filePath'], $eventData['filePath'], $widthResizeOnUpload , '', 'default', array('quality' => 100));
}
}
}
Wollen Sie generell Bilder beim Hochladen herunterrechnen, aber in einem bestimmten Unterverzeichnis (z.B. /wAssets/img/pressebilder-original) die Bilder im Original ablegen, berücksichtigen Sie das wie folgt:
// WICHTIG:
// Die PHP-Tags sind nur in diesem Quelltext-Beispiel gesetzt und
// und dürfen im Ereignisfenster nicht gesetzt werden (siehe Screen)
// Beispiel: Auszug aus dem Verzeichnisereignis onAfterUpload von /wAssets/img
$widthResizeOnUpload = wVariables::getValue('resize_pictures_after_upload', wProject::getPathGlobal($eventData['projectPath']));
if($widthResizeOnUpload != ''){
if(preg_match("/gif|jpg|jpeg|png/i", wPathName::getFileExtension($eventData['filePath'])) && !preg_match("/\/pressebilder-original\//i", $eventData['filePath'])){
if(wImage::getWidth($eventData['filePath']) > $widthResizeOnUpload){
wImage::resize($eventData['filePath'], $eventData['filePath'], $widthResizeOnUpload , '', 'default', array('quality' => 100));
}
}
}
Der folgende Beispielquelltext bildet eine Aktion innerhalb des Verzeichnisereignisses "onAfterUpload" ab. Beim Hochladen von .gif bzw. .jpg Dateien in das betreffende Verzeichnis wird das Bild auf eine Breite von 500 Pixel angepasst. Hierbei findet zuvor eine Abfrage statt, welche Breite das hochgeladene Bild hat. Sofern dies nicht breiter als 500 Pixel ist, wird das Bild nicht angepasst. Genutzt wird hierfür die PHP-Funktion "getimagesize".
if (strtolower(wPathName::getFileExtension($eventData['filePath'])) == 'gif' || strtolower(wPathName::getFileExtension($eventData['filePath'])) == 'jpg') {
$eventData['width'] = 500;
$eventData['image'] = getimagesize($_SERVER['DOCUMENT_ROOT'].$eventData['filePath']);
$eventData['imageWidth'] = $eventData['image'][0];
$eventData['imageHeight'] = $eventData['image'][1];
if ($eventData['imageWidth'] > $eventData['width']) {
wThumbnail::resizeImage($eventData['filePath'], $eventData['width'], '', 'default');
}
}
Achten Sie darauf, dass innerhalb des Verzeichnisereignisses (im Gegensatz zu o.g. Quelltextbeispiel) KEINE PHP-Tags gesetzt werden, sondern lediglich der Inhalt des PHP-Scripts!