BETA REST API - Bilder

Hi, Kann es sein, dass in der Beta Version 4.2 keine Bilder für alle Größen erzeugt werden? Im Backend ist das Bild zu sehen. Aber im Frontend nicht. Auf dem Server ist immer nur das Original Bild und 1 thumbnail Bild.

Hi, danke für dein Feedback. Ich habe hierfür mal ein Ticket erstellt zum Überprüfen: http://jira.shopware.de/?ticket=SW-7616 Falls noch mehrere Dinge auffallen, könnt ihr natürlich gerne unseren Bugtracker verwenden. Gerade für der Beta-Phase ist uns Feedback natürlich super wichtig. :thumbup: Vg, Marcel

Hallo, Haben selbiges Problem, wobei das Originalbild vorhanden ist, aber das Thumbnail wiederum nicht. Grüße, Daniel

Hi Marcel, laut Ticket ist es in der 4.2 gelöst. Habe es eben getestet. Ich Importiere über die API neue Artikel mit Bilder. Die Bilder werden im original zu Shopware geladen. Es werden aber keine Thumbnails erzeugt. Ist das so gewollt? Danke

Hi, aus Performance-Gründen werden für Media Objekte die über den Artikel hochgeladen werden keine Thumbnails generiert, da die Request sonst in einen Timeout laufen würden bei zu großen Stapelverarbeitungen. Damit Thumbnails generiert werden gibt es 2x Möglichkeiten: Möglichkeit 1: Wenn du über Rest-Calls arbeitest, lade zunächst die Images über die Media Resource hoch und verknüpfe diese zum Artikel Möglichkeit 2: Wenn du lokal mit der Rest API arbeitest kannst du anschließend die Media Objekte iterieren und für jedes Objekt folgenden Source aufrufen: $manager = Shopware()-\>Container()-\>get('thumbnail\_manager'); $manager-\>createMediaThumbnail($media, array(), true);

1 „Gefällt mir“

Hab die Möglichkeit1 von Oliver umgesetzt, aber leider werden die Bilder nun alle quadratisch angezeigt. Dies führt zu Verzerrungen. Kann man dies über die API irgendwie bewerkstelligen, dass die Bilder in der richtigen Relation generiert werden?

Das mit der Verzerrung habe ich auch, aber nur bei den 720x600px Bildern. Die anderen sind alle im richtigen Verhältnis skaliert. War vor 4.2 jedenfalls anders, da habe ich auch nachdem gleichen Prinzip importiert (erst Bild im Media-Manager erstellt, dann im Artikel verwiesen).

Bei mir betrifft das sämtliche Bilder die generiert wurden. Gibt es hier bereits einen Lösungsweg?

Ok, kann das bestätigen, lag an allten Thumbnails von vohrigen Uploads. Bei mir werden die API-Thumbnails auch definitiv falsch skaliert. Da wird offensichtlich nur die Breite genommen und nicht mehr proportional die Höhe verringert. Ebenfalls: Wenn ich Bilder (z.B. Hersteller-Bilder) über die Media-Resource anlege gibt es auch einen Fehler mit [quote]No thumbnail sizes were found in the album settings[/quote], der Upload klappt prinzipiell, nur eben ganz ohne Vorschau. Für die Bilder die unter „Unsortiert“ landen werden ja auch passend angelegt - auch ohne Thumbnail-Einstellungen. Da kann ich aber gerade nicht einschätzen, wie das vorher funktionierte … Hat wer da eine Idee, was wenigstens die falschen Skalierungen angeht? … Sonst muss ich mich da gleich mal durchwühlen und die Stelle finden … EDIT: Ich bin etwas weiter. Ich habe mal geguckt, Shopware\Components\Thumbnail\Generator hat ein boolean in der Methode: public function createThumbnail($imagePath, $destination, $width, $height, $keepProportions = false) Das $keepProportions ist wie man sieht im default false, wird aber von der Media-Resource aber nicht auf true gesetzt. Die Media-Resource stößt das an $manager-\>createMediaThumbnail($media); Wobei diese Methode bereits das Proportions-Flag bekommen könnte laut Definition: public function createMediaThumbnail(Media $media, $thumbnailSizes = array(), $keepProportions = false) Wenn ich das auf true setze, werden die Thumbnails sehrwohl richtig skaliert. Wieso ist das also im Default auf false? … Habe ich da sonst etwas übersehen? … Niklas

1 „Gefällt mir“

So, wie hier angesprochen ist mein Versuch gescheitert, das ganze per Hook zu korrigieren. Da die gewünschte Klasse aber nicht hookable ist, funktioniert das nicht. Deswegen muss ich (aktuell) leider nach dem speichern von einem Bild danach noch einmal die Thumbnails generieren, aber mit dem passenden Flag: $thumbnailManager = $this-\>getMediaResource()-\>getContainer()-\>get('thumbnail\_manager'); try { $thumbnailManager-\>createMediaThumbnail($mediaObj, array(), true); } .... Wenn wer eine andere Idee hat bin ich gespannt. Ist eben blöd, weil er jetzt einen Schwung umsonst generiert, mir fällt da aber aktuell keine andere Lösung ein … Schöne Grüße! Niklas

Danke für den Workaround Niklas, habs jetzt vorerst auch mal so gelöst, da das Problem in der 4.2.1er Version noch immer besteht. Bin heute auf ein weiteres Hindernis beim Bilderimport gestoßen. Wenn ich einen Artikel mit PUT update werden jedesmal die Bilder dupliziert obwohl diese die selbe MediaId besitzen. Gibt es diesbezüglich eine Lösung?

Auch das kann ich bestätigen, in meiner Anbindung vergleiche ich die Bilder. Wenn es Unterschiede gibt und ich die Bilder im Artikel updaten möchte, setze ich vor dem eigentlichen Update ein Update ab, welches nur die Bilder zurücksetzt: try { $this-\>getArticleResource()-\>update($articleId, array('images' =\> array())); } catch ... Danach baue ich das Bild-Array neu auf (auch mit den vorhandenen mediaIds) und update dieses im Artikel mit dem Rest, damit habe ich das Problem mit den doppelten Einträgen verhindert. Ja, das hat mich auch länger verwirrt, was das sollte. Beim schreiben fällt mir ein, mit 4.2 könntest du das auch über den replace- Befehl vielleicht machen, dann ersetzt du immer alles, dann spart man sich das vergleichen. Auf der anderen Seite, vermeide ich auch gerne soviel Updates wie möglich, weil Shopware bei sowas ja immer die IDs weiter hochzählt. Die Preise werden auch bei jedem Abgleich von der ID her hochgezählt … Schön das ich helfen konnte :slight_smile: Niklas

Ab der Version 4.2 besteht hier die Möglichkeit den API Merge Modus zu verwenden. zB // PUT /api/articles/1 array( '\_\_options\_images' =\> array('replace' =\> true), 'images' =\> array( 112 =\> array( 'mediaId' =\> 112, 'main' =\> 1, ), 113 =\> array( 'mediaId' =\> 113, 'main' =\> '2', ) ), ); Damit lässt sich das Problem gut lösen.

Hallo, kann man dies bitte nochmal so zusammenfassen, dass auch unerfahrene diesen Code einbinden können? Beim erstellen von Artikeln über die API werden die Bilder falsch generiert. Wenn man die Bilder manuell generiert, funktioniert alles prima. Gruß Daniel