fix(imagor): use fit-in for thumbnail resizing to match Shopware's aspect-ratio behavior #45

Merged
csaeum merged 1 commit from fix/imagor-thumbnail-fit-in into main 2026-08-09 17:52:52 +00:00
Owner

Closes #44.

Root Cause

Shopwares eigene lokale Thumbnail-Erzeugung (ThumbnailService::calculateThumbnailSize()) passt Bilder in die Zielgröße ein, statt sie zu beschneiden, sobald der Medien-Ordner „Bildseitenverhältnis beibehalten" aktiv hat (Standard bei den meisten Ordnern). RemoteThumbnailUrlSubscriber fragte imagor bisher nur mit /unsafe/WxH/... an — imagors Default dafür ist Crop-to-Fill, wodurch Hochkant-Bilder hart in querformatige Thumbnail-Boxen beschnitten wurden.

Fix

ImagorUrlBuilder::build() setzt jetzt fit-in als eigenes Pfadsegment (/unsafe/fit-in/WxH/...), sobald konkrete Breite/Höhe angefragt werden — bildet Shopwares Einpass-Verhalten nach. Die Basis-Bild-URL (0x0) ist unverändert.

Testplan

  • 59/59 Unit-Tests grün in DDEV
  • php -l
  • Live-Test nach Deploy: Hochkant-Bilder in Thumbnail-Größen werden eingepasst statt beschnitten
Closes #44. ## Root Cause Shopwares eigene lokale Thumbnail-Erzeugung (`ThumbnailService::calculateThumbnailSize()`) passt Bilder in die Zielgröße ein, statt sie zu beschneiden, sobald der Medien-Ordner „Bildseitenverhältnis beibehalten" aktiv hat (Standard bei den meisten Ordnern). `RemoteThumbnailUrlSubscriber` fragte imagor bisher nur mit `/unsafe/WxH/...` an — imagors Default dafür ist Crop-to-Fill, wodurch Hochkant-Bilder hart in querformatige Thumbnail-Boxen beschnitten wurden. ## Fix `ImagorUrlBuilder::build()` setzt jetzt `fit-in` als eigenes Pfadsegment (`/unsafe/fit-in/WxH/...`), sobald konkrete Breite/Höhe angefragt werden — bildet Shopwares Einpass-Verhalten nach. Die Basis-Bild-URL (`0x0`) ist unverändert. ## Testplan - [x] 59/59 Unit-Tests grün in DDEV - [x] `php -l` - [ ] Live-Test nach Deploy: Hochkant-Bilder in Thumbnail-Größen werden eingepasst statt beschnitten
ThumbnailService::calculateThumbnailSize() fits images within the target
box when a media folder keeps aspect ratio (Shopware's default for most
folders) instead of cropping. RemoteThumbnailUrlSubscriber requested plain
WxH from imagor, which defaults to crop-to-fill, hard-cropping portrait
images into landscape thumbnail boxes. ImagorUrlBuilder::build() now
requests fit-in/WxH whenever concrete dimensions are given, matching
Shopware's default. The 0x0 base-image path is unaffected.
csaeum merged commit a1bcf8a1b1 into main 2026-08-09 17:52:52 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
SW-Plugins/wsc_swplugin_aiseotools!45
No description provided.