mirror of
				https://github.com/C4illin/ConvertX.git
				synced 2025-11-03 21:43:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			139 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { execFile } from "node:child_process";
 | 
						|
 | 
						|
// declare possible conversions
 | 
						|
export const properties = {
 | 
						|
  from: {
 | 
						|
    images: [
 | 
						|
      "avif",
 | 
						|
      "bif",
 | 
						|
      "csv",
 | 
						|
      "exr",
 | 
						|
      "fits",
 | 
						|
      "gif",
 | 
						|
      "hdr.gz",
 | 
						|
      "hdr",
 | 
						|
      "heic",
 | 
						|
      "heif",
 | 
						|
      "img.gz",
 | 
						|
      "img",
 | 
						|
      "j2c",
 | 
						|
      "j2k",
 | 
						|
      "jp2",
 | 
						|
      "jpeg",
 | 
						|
      "jpx",
 | 
						|
      "jxl",
 | 
						|
      "mat",
 | 
						|
      "mrxs",
 | 
						|
      "ndpi",
 | 
						|
      "nia.gz",
 | 
						|
      "nia",
 | 
						|
      "nii.gz",
 | 
						|
      "nii",
 | 
						|
      "pdf",
 | 
						|
      "pfm",
 | 
						|
      "pgm",
 | 
						|
      "pic",
 | 
						|
      "png",
 | 
						|
      "ppm",
 | 
						|
      "raw",
 | 
						|
      "scn",
 | 
						|
      "svg",
 | 
						|
      "svs",
 | 
						|
      "svslide",
 | 
						|
      "szi",
 | 
						|
      "tif",
 | 
						|
      "tiff",
 | 
						|
      "v",
 | 
						|
      "vips",
 | 
						|
      "vms",
 | 
						|
      "vmu",
 | 
						|
      "webp",
 | 
						|
      "zip",
 | 
						|
    ],
 | 
						|
  },
 | 
						|
  to: {
 | 
						|
    images: [
 | 
						|
      "avif",
 | 
						|
      "dzi",
 | 
						|
      "fits",
 | 
						|
      "gif",
 | 
						|
      "hdr.gz",
 | 
						|
      "heic",
 | 
						|
      "heif",
 | 
						|
      "img.gz",
 | 
						|
      "j2c",
 | 
						|
      "j2k",
 | 
						|
      "jp2",
 | 
						|
      "jpeg",
 | 
						|
      "jpx",
 | 
						|
      "jxl",
 | 
						|
      "mat",
 | 
						|
      "nia.gz",
 | 
						|
      "nia",
 | 
						|
      "nii.gz",
 | 
						|
      "nii",
 | 
						|
      "png",
 | 
						|
      "tiff",
 | 
						|
      "vips",
 | 
						|
      "webp",
 | 
						|
    ],
 | 
						|
  },
 | 
						|
  options: {
 | 
						|
    svg: {
 | 
						|
      scale: {
 | 
						|
        description: "Scale the image up or down",
 | 
						|
        type: "number",
 | 
						|
        default: 1,
 | 
						|
      },
 | 
						|
    },
 | 
						|
  },
 | 
						|
};
 | 
						|
 | 
						|
export function convert(
 | 
						|
  filePath: string,
 | 
						|
  fileType: string,
 | 
						|
  convertTo: string,
 | 
						|
  targetPath: string,
 | 
						|
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
						|
  options?: unknown,
 | 
						|
): Promise<string> {
 | 
						|
  // if (fileType === "svg") {
 | 
						|
  //   const scale = options.scale || 1;
 | 
						|
  //   const metadata = await sharp(filePath).metadata();
 | 
						|
 | 
						|
  //   if (!metadata || !metadata.width || !metadata.height) {
 | 
						|
  //     throw new Error("Could not get metadata from image");
 | 
						|
  //   }
 | 
						|
 | 
						|
  //   const newWidth = Math.round(metadata.width * scale);
 | 
						|
  //   const newHeight = Math.round(metadata.height * scale);
 | 
						|
 | 
						|
  //   return await sharp(filePath)
 | 
						|
  //     .resize(newWidth, newHeight)
 | 
						|
  //     .toFormat(convertTo)
 | 
						|
  //     .toFile(targetPath);
 | 
						|
  // }
 | 
						|
  let action = "copy";
 | 
						|
  if (fileType === "pdf") {
 | 
						|
    action = "pdfload";
 | 
						|
  }
 | 
						|
 | 
						|
  return new Promise((resolve, reject) => {
 | 
						|
    execFile("vips", [action, filePath, targetPath], (error, stdout, stderr) => {
 | 
						|
      if (error) {
 | 
						|
        reject(`error: ${error}`);
 | 
						|
      }
 | 
						|
 | 
						|
      if (stdout) {
 | 
						|
        console.log(`stdout: ${stdout}`);
 | 
						|
      }
 | 
						|
 | 
						|
      if (stderr) {
 | 
						|
        console.error(`stderr: ${stderr}`);
 | 
						|
      }
 | 
						|
 | 
						|
      resolve("Done");
 | 
						|
    });
 | 
						|
  });
 | 
						|
}
 |