Konvertierung von Heic/Heif zu PNG via ImageMagick
Funktionsumfang
Der Node unterstützt die Umwandlung von Bildern im Heic/Heif Format zu PNG. Zudem kann die maximale Größe (Breite, Höhe in Pixel) des umgewandelten Bildes begrenzt werden. Sollte das Ursprungsbild kleiner sein, findet keine Anpassung der Größe statt.
Senden eines Jobs via ImageMagickConvertNode
Der folgende Code-Block zeigt schematisch die notwendigen Schritte:
// JobFactory mit Verbindung zum Messaging-System erstellen JMSJobFactroy jobFactory = new JMSJobFactory(...); // Job erstellen und konfigurieren Job job = jobFactory.createJob(); final StreamInputNode siNode = new StreamInputNode(); final StreamOutputNode soNode = new StreamOutputNode(); final ImageMagickConvertNode converterNode = new ImageMagickConvertNode(); // Maximale Größe des PNGs angeben - hier als Beispiele mit Breite 400 und Höhe 300 int width = 400; int height = 300; converterNode.setMaxImageSize(width, height); job.attach(// siNode.appendSuccessor(converterNode) .appendSuccessor(soNode)); // Job abschicken job.submit(); // Eingabedaten senden final File file = ... final InpusStream inputStream = new FileInputStream(file); final StreamDescriptor streamDescriptor = new StreamDescriptor(); sd.setFileName(file.getName()); Stream bundledStream = new BundledStream(inputStream, streamDescriptor); siNode.addStream(bundledStream); siNode.complete(); // Resultat abholen for (Stream stream : soNode.getStreamBundle()) { ... }
Automatische Verarbeitung
DynamicPipelineNode
Um erkannte Heic/Heif Bilder in der DynamicPipelineNode zu verarbeiten, kann folgende Regel zum verwendeten Regelsatz, standardmäßig in der Datei server-config/dynamic-pipeline-rules/default.xml
, hinzugefügt werden:
<rule name="Render HEIC/HEIF with ImageMagick worker"> <type>image/heif</type> <type>image/heic</type> <type>image/heif-sequence</type> <type>image/heic-sequence</type> <node class="com.levigo.jadice.server.imagemagick.ImageMagickConvertNode" /> <loopback /> </rule>
Email-Konvertierung
Damit Heic/Heif Bilder in Emails verarbeitet werden können, kann im Skript email-conversion/EmailConversion.groovy
folgender Fall am Ende der Switch-Anweisung ergänzt werden:
case ["image/heif", "image/heic", "image/heif-sequence", "image/heic-sequence"]: support.info("Converting $input.descriptor.baseType to PNG"); handleAttachment(input, doCreateCover) process() { com.levigo.jadice.server.nodes.DynamicPipelineNode() } break