Merge pull request #31 from C4illin/feature-libjxl

This commit is contained in:
Emrik Östling 2024-06-11 19:36:52 +02:00 committed by GitHub
commit 15d4233a82
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 140 additions and 8 deletions

71
src/converters/libjxl.ts Normal file
View file

@ -0,0 +1,71 @@
import { exec } from "node:child_process";
// declare possible conversions
export const properties = {
from: {
jxl: ["jxl"],
images: [
"apng",
"exr",
"gif",
"jpeg",
"pam",
"pfm",
"pgm",
"pgx",
"png",
"ppm",
],
},
to: {
jxl: [
"apng",
"exr",
"gif",
"jpeg",
"pam",
"pfm",
"pgm",
"pgx",
"png",
"ppm",
],
images: ["jxl"],
},
};
export function convert(
filePath: string,
fileType: string,
convertTo: string,
targetPath: string,
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
options?: any,
): Promise<string> {
let tool = "";
if (fileType === "jxl") {
tool = "djxl";
}
if (convertTo === "jxl") {
tool = "cjxl";
}
return new Promise((resolve, reject) => {
exec(`${tool} "${filePath}" "${targetPath}"`, (error, stdout, stderr) => {
if (error) {
reject(`error: ${error}`);
}
if (stdout) {
console.log(`stdout: ${stdout}`);
}
if (stderr) {
console.error(`stderr: ${stderr}`);
}
resolve("success");
});
});
}

View file

@ -20,6 +20,11 @@ import {
properties as propertiesPdflatex,
} from "./pdflatex";
import {
convert as convertLibjxl,
properties as propertiesLibjxl,
} from "./libjxl";
import { normalizeFiletype } from "../helpers/normalizeFiletype";
// This should probably be reconstructed so that the functions are not imported instead the functions hook into this to make the converters more modular
@ -50,6 +55,10 @@ const properties: {
) => any;
};
} = {
libjxl: {
properties: propertiesLibjxl,
converter: convertLibjxl,
},
vips: {
properties: propertiesImage,
converter: convertImage,