Search the FirstSpirit Knowledge Base
Hallo,
ich versuche mit Hilfe eines Skripts automatisiert für jede Auflösung einen passenden Bildauschnitt zu ermitteln.
Ich beziehe mich hierbei auf den Post https://community.e-spirit.com/message/9197#9197.
Es geht darum, dass wir eine große Menge fester Auflösungen haben, FirstSpirit jetzt aber standardmäßig die Bilder in den entsprechenden Auflösungen skaliert und somit vielfach starl verzerrt.
Vom Kunden gewünscht ist eine Möglichkeit automatisiert für jede Auflösung einen entsprechenden Ausschnitt vom Originalbild zu ermitteln. Dieser Ausschnitt soll links oben beginnen und dann in der jeweiligen Auflösung aufgezogen werden. Im folgenden ein Auschnitt des entsprechenden Skriptes. Bei der Selection setze ich momentan noch einen festen Wert. Führe ich das Skript aus, wird aber bei den einzelnen Auflösungen nicht ein Ausschnitt in der angegebenen Größe erstellt, sondern einfach das Originalbild in die entsprechenden Auflösungen skaliert.
...
for(medium:mediaList){
context.logInfo("Klasse: " + medium.getClass());
if(medium.getType() == Media.PICTURE){
picture = medium.getPicture(project.getMasterLanguage());
try{
if(!medium.isLocked()){
medium.setLock(true);
}
for(resolution:resolutions){
pictureResolution = picture.getPictureResolution(resolution);
if(pictureResolution.getSize() < 0){
pictureCropData = new PictureCropData();
selection = new Rectangle2D.Double(0.0,0.0,100.0,200.0);
pictureCropData.setSelection(selection);
pictureResolution.setCropData(pictureCropData);
pictureMetaData = picture.getPictureMetaData(resolution);
picture.setPicture(pictureResolution.getResolution(),pictureMetaData.getSize(),picture.getInputStream(pictureResolution.getResolution()),pictureMetaData.getExtension());
}else{
context.logInfo("Für Auflösung " + pictureResolution.getName() + " ist bereits eine Selektion vorhanden.");
}
}
medium.save();
...
Meine Frage ist zunächst, ob ich hier was falsch mache oder ob es mit der FirstSpirit API überhaupt nicht möglich ist das umzusetzen was wir wollen.
Ich hoffe irgendjemand kann mir weiterhelfen.
Viele Grüße,
Stefan
Hallo @dehaatbi @f_koenig @hoebbel,
bezugnehmend auf diesen Post und den hier https://community.crownpeak.com/t5/Questions-Answers/JPG-to-Webp-Konvertierung/m-p/57474 ...
Ich stehe gerade auch vor der Herausforderung für webP Bildausschnitte neu zu setzen. Leider ist der Kunde noch nicht auf FS-Version 2023.10, so dass ich die automatische Lösung von FirstSpirit nicht verwenden kann.
Habt ihr das Zurücksetzen durch ein Modul gemacht?
Ich habe nämlich das Problem, dass er mir die von @dehaatbi angesprochene fs-isolated-webrt bei der Installation des Moduls ignoriert und dann beim Ausführen meines Codes meckert, dass er die Klasse "" nicht findet.
Installation des Moduls:
WARN 20.09.2024 16:56:52.783 (de.espirit.firstspirit.server.module.IsolationModuleManager): Resource 'lib/fs-isolated-webrt-5.2.230817.jar' of module 'bridgingIT WCMS Utilities' will be ignored.
Ausführen eines Schedule-Jobs zum Setzen der Bilder und Zuschnitte
ERROR 20.09.2024 16:46:17.547{dNR=} (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : java.lang.NoClassDefFoundError: de/espirit/firstspirit/store/access/mediastore/PictureCropImage
java.lang.NoClassDefFoundError: de/espirit/firstspirit/store/access/mediastore/PictureCropImage
Da es sich in meinem Fall um ein Remote-Media Projekt mit einer sehr großen Anzahl an Bildern handelt wollte ich das Setzen der Medien über ein Executable aus einem Schedule anstoßen. Außerdem gibt es zusätzlich eine große Anzahl an Landesprojekten, die ggf. noch lokale Medien haben, so dass ich den Schedule einfach aus einem Template in jedem Projekt ausführen kann.
Habt ihr spontane Ideen?
Grüße
Sandro
Hi @bIT_sosswald ,
ich hab mal geschaut. In unserem Modul ist die fs-isolated-webrt als "provided" in der pom.xml eingetragen, wird also nur zum kompilieren benötigt.
In der module-isolated.xml hab ich es auch nicht mit drin. Also scheint dann automatisch verfügbar zu sein wenn das Modul erst mal installiert ist. Also leider keine Ahnung wieso bei dir der NoClassDefFoundError kommt.
Gruß Tobi
HI @dehaatbi,
danke für deine Antwort. Komisch, bei mir hat es weiter nicht funktioniert. Aber egal, jetzt habe ich eine kleine lokale Spring Boot App, die mit Hilfe der webrt Lib das Zurücksetzen der Zuschnitte übernimmt. Ist zwar ein massiver Overhead was den Datentransfer abgeht, aber es funktioniert.
Beste Grüße
Sandro