From 1ac502542c5d13007c5765eabeb288deebeeaf8d Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Sun, 22 Feb 2026 22:04:54 +0200 Subject: [PATCH] Add support for converting JXL to other formats --- .../meviz/encoder/FormatsRegistry.java | 1 + .../meviz/encoder/converters/JxlDecoder.java | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 src/main/java/eu/svjatoslav/meviz/encoder/converters/JxlDecoder.java diff --git a/src/main/java/eu/svjatoslav/meviz/encoder/FormatsRegistry.java b/src/main/java/eu/svjatoslav/meviz/encoder/FormatsRegistry.java index 4421846..1bb1c63 100755 --- a/src/main/java/eu/svjatoslav/meviz/encoder/FormatsRegistry.java +++ b/src/main/java/eu/svjatoslav/meviz/encoder/FormatsRegistry.java @@ -24,6 +24,7 @@ public class FormatsRegistry { registerEncoder(new Convert()); registerEncoder(new WebpEncoder()); registerEncoder(new WebpDecoder()); + registerEncoder(new JxlDecoder()); // image to text (OCR) registerEncoder(new Ocr()); diff --git a/src/main/java/eu/svjatoslav/meviz/encoder/converters/JxlDecoder.java b/src/main/java/eu/svjatoslav/meviz/encoder/converters/JxlDecoder.java new file mode 100644 index 0000000..b5b7a0d --- /dev/null +++ b/src/main/java/eu/svjatoslav/meviz/encoder/converters/JxlDecoder.java @@ -0,0 +1,42 @@ +/* + * Meviz - Various tools collection to work with multimedia. Author: Svjatoslav Agejenko. + * This project is released under Creative Commons Zero (CC0) license. + */ + +package eu.svjatoslav.meviz.encoder.converters; + +import eu.svjatoslav.meviz.encoder.EncodingOptions; + +import java.io.File; +import java.util.List; + +public class JxlDecoder extends AbstractConverter { + + @Override + public String getCommand(final File inputFile, final File targetFile, + final EncodingOptions options, String targetFormat) { + if ("jpg".equals(targetFormat) || "jpeg".equals(targetFormat)) { + return "tmp=$(mktemp /tmp/meviz_jxl_XXXXXX.png) && " + + "djxl \"" + inputFile.getAbsolutePath() + "\" \"$tmp\" && " + + "convert \"$tmp\" \"" + targetFile.getAbsolutePath() + "\" && " + + "rm -f \"$tmp\""; + } + return "djxl \"" + inputFile.getAbsolutePath() + "\" \"" + + targetFile.getAbsolutePath() + "\""; + } + + @Override + public List getTargetFileExtensions() { + return toList("png", "jpg", "jpeg"); + } + + @Override + public List getSourceFileExtensions() { + return toList("jxl"); + } + + @Override + public boolean isTerminalMandatory() { + return false; + } +} -- 2.20.1