#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);