DefaultImage Trait¶
use \Alvine\Application\Platform\Builder\DataSource\Commerce\Item\DefaultImage;
Das DefaultImage Trait erweitert das Produkt um Bilder. Die Bilder werden aus dem
Verzeichnis /alvine/image/gfx/<iid>
geladen und in das Verzeichnis /image/item/
abgelegt.
Der Zielpfad wird in der Methode buildImageSubPath
aufgebaut. Diese Methode
muss überschrieben werden um den Pfad zu ändern.
Das Hauptbild wird über die Produkt Eigenschaft image.group.main.1.filename
definiert.
Dataset¶
Die Schlüssel von jedem Bild sehen folgendermaßen aus:
Name | Beschreibung | Beispiel |
---|---|---|
raw | RAW Daten | 0xafffeff12e5ff123 ... |
base64 | Base64 Codiert | "data:image/jpeg;base64/9j/4AAQSkZJRgABAQEAYABgAAD ... |
mimetype | der Mime Typ | image/jpeg |
bits | Bits | 8 |
height | Breite | 50 |
width | Höhe | 50 |
source | URL | image/item/50-50/10095/1550778069/messer-set.jpg |
Die Bilder stehen über die beiden Schlüssel image
und image-group
zur Verfügung. In image
sind alle Bilder als Collection verfügbar. Wohingegen in image
eine Map mit Wertden definiert ist.
// ALle Bilder
$item['image']
// Bilder Gruppen
$item['image-group']
Methoden¶
buildImageSubPath¶
Diese Methode legt den Pfad für das auszuliefernde Bild fest.
protected function buildImageSubPath(\Alvine\IO\File\File $file, string $iid, string $identifier, string $width, string $height): string {
return 'image/item/'.$width.'-'.$height.'/'.$iid.'/'.$identifier.'/';
}
$width
und $height
entsprechen der Dimmension des Bildes, Die $iid
ist die eindeutige Produkt-ID.
Der $identifier
hält den md5-Hash des Original-Bildinhaltes.
Begründung für den Aufbau des Pfades
Höhe und Breite werden als erstes gesetzt, damit man eine gesamte Produktion
von Bilder in einer Größe - die man nicht mehr verwendet - einfach löschen kann, ohne
in jede iid gehen zu müssen. $identifier
wird unterhalb der IID gesetz, damit man Bilder
eines Produktes gezielt löschen kann.
getDefaultImageManipulation¶
Mit dieser Methode können die Bilder mit den entsprechenden Operationen angepasst werden
/**
* Bild manipulationen
*
* @param \Alvine\Image\Image $image Bild
* @param \int $width Breite
* @param \int $height Höhe
*
* @return \Alvine\Image\Image Bild
*/
protected function getDefaultImageManipulation(\Alvine\Image\Image $image, $width, $height): \Alvine\Image\Image {
$image->shrink($width, $height, \Alvine\Image\Operation\Shrink::CENTER);
return $image;
}
getStandardImageSizes¶
Mit dieser Methode wird definiert, in welchen Größen jedes Bild berechnet werden sollen
/**
* Gewünschte Standardgröße für die Bilderstellung
*
* @return array<int,int>
*/
protected function getStandardImageSizes(): array {
return [
[50, 50], /** Breite und Höhe */
[200, 200],
[450, 450],
[500, 500],
];
}
Beispiel¶
So kann das Image im HTML-Template angesprochen werden.
<img data-attributes="src dataset:image-group |
index:200-200 | index:image1 | index:source ">