Есть ли способ разделить многостраничный файл?Файл TIFF в несколько файлов PNG/JPG с помощью sharp node.js модуль?

#javascript #node.js #image #tiff #sharp

Вопрос:

У меня есть один файл .tiff с несколькими страницами, и я хотел бы разделить файл на несколько файлов .png или .jpg (одна страница становится одним изображением png/jpg). Из-за характера моей кодовой базы я бы предпочел не использовать ImageMagick или GraphicsMagick (я не могу установить инструменты CLI).

Мне было интересно, есть ли в любом случае способ сделать это? Я знаю, что sharp может извлекать метаданные из файла .tiff, которые показывают мне количество страниц в файле. Будет ли что-то в духе следующей работы:

 const tiffImage = sharp(tiffFileName).raw().toBuffer();
const metadata = await tiffImage.metadata().then(function(metadata) {
  pages: metadata.pages,
  pageHeight: metadata.pageHeight
});
for (let i = 0; i < metadata.pages; i  ) {
  // split tiff file using the pageHeight? lets call this bufferOfOnePage
  sharp(bufferOfOnePage).png().toFile(PNG_OUTPUT_NAME);
}
 

Ответ №1:

Да, вы можете перейти page в опции sharp.

Опции.номер страницы номер страницы, с которой нужно начать извлечение для многостраничного ввода (GIF, WebP, AVIF, TIFF, PDF), на основе нуля. (необязательно, по умолчанию 0)

     sharp(bufferOfOnePage, {page: i}).png().toFile(PNG_OUTPUT_NAME);