Можно ли обрезать изображение без полной загрузки его в память?

Мне удалось сгенерировать изображение PNG с фракталом.

Высота изображения составляет 65 536 пикселей, а ширина - 65 536 пикселей. Он слишком велик, чтобы его можно было расшифровать в памяти и отобразить. У него, вероятно, много неиспользуемого пространства возле границ, и я хочу обрезать его, чтобы значительно уменьшить его площадь.

Я попробовал GIMP и GraphicsMagick, но GIMP заморозил мой компьютер, и GraphicsMagick не смог выделить достаточно памяти для изображения.

Я использую Linux, и у меня есть 16 ГБ оперативной памяти. Размер сжатого изображения составляет 6,2 МБ.

Можно ли обрезать границы без полной загрузки изображения в память?

FWIW, в конце концов я использовал сервер моей школы, но я все еще хочу знать ответ.

1 ответ

Фильтр "обрезки" ImageMagick должен уметь делать это эффективно.

https://www.imagemagick.org/Usage/crop/

Теоретически то, чего вы хотите достичь, определенно возможно. Просто нужно найти приложение, которое действительно делает это так.

Имейте в виду, что изображение размером 65536 x 65536 с 24-битным цветом будет занимать около 12 ГБ ОЗУ, поэтому на самом деле оно поместится в памяти.

Если это 32-битный цвет, это будет около 17 ГБ, но даже тогда вы можете загрузить все изображение в ОЗУ - Linux переполнит память в файле sawp. Это медленно, и производительность не будет очень хорошей, но на самом деле это не произойдет - это будет просто медленно, если у вас не закончится пространство подкачки.

Вы уже знаете декартово определение изображения.

Рассмотрим некоторый код Python для чтения файла в буферных загрузках разумного размера - выберите одну или несколько строк пикселей изображения на буфер, но достаточно мало в отношении доступности памяти.

На большинстве линий пикселей крайние левые и крайние правые пиксели могут быть отброшены. Первые и последние несколько "пограничных" линий, аналогично.

Размер буфера выходного файла может и будет отличаться от размера входного файла по определению.

Другие вопросы по тегам