Эффективное удаление одной страницы из большого многостраничного TIFF с помощью сжатия JPEG в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Эффективное удаление одной страницы из большого многостраничного TIFF с помощью сжатия JPEG в Python

Сообщение Anonymous »

Я работаю с большим многостраничным файлом TIFF, сжатым в формате JPEG, и мне нужно удалить из него одну страницу. Я использую пакет Python tifffile для обработки TIFF и уже знаю, какую страницу хочу удалить, на основе тегов метаданных, связанных с этой страницей. Мой текущий подход заключается в том, чтобы прочитать все страницы, изменить целевую страницу (пропустив или заменив ее) и записать остальное обратно в новый файл TIFF.
Вот что я пробовал пока:

Код: Выделить всё

import tifffile

with tifffile.TiffFile('file') as tif:
for i, page in enumerate(tif.pages):
if some condition with tags is true:
# Skip the page to delete or replace with a dummy page

image_data = page.asarray(memmap=True)  # Memory-mapped access to the page's data

# Write the page to the output file
writer.write(
image_data,
compression='jpeg',
photometric=page.photometric,
metadata=page.tags,
)
Однако у этого подхода есть несколько проблем:
  • Использование памяти: обработка большого файла потребляет почти все доступной памяти (у меня 32 ГБ ОЗУ, но она использует до 28 ГБ), что делает невозможным использование больших файлов.
  • Проблемы сжатия: Различные методы сжатия, такие как LZW, ZSTD и JPEG создает файлы совершенно разных размеров, некоторые из них намного больше оригинала.
  • Производительность: использование таких методов, как полоски или фрагментирование, приводит к очень медленная обработка, удаление одной страницы занимает слишком много времени.
  • Размер выходного файла: размер выходного файла при использовании другого метода сжатия. делает его слишком большим! (Вход от 3 ГБ в формате JPEG до вывода более 50 ГБ в LZW)
Есть ли в Python какой-нибудь способ эффективно удалить одну страницу из большого многостраничного файла TIFF, не занимая слишком много памяти и не занимая вечность? Я видел несколько пакетов .NET, которые могут удалять страницы на месте. Есть ли у Python подобное решение?

Подробнее здесь: https://stackoverflow.com/questions/793 ... peg-compre
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»