Как я могу открыть очень, очень большое изображение, чтобы уменьшить его?

14

У меня есть изображение с разрешением 18984x28591px, но я не могу открыть его с помощью Paint или Pixlr Editor, чтобы уменьшить его размер.

Как я могу конвертировать или открыть это большое изображение на моем ноутбуке?

введите описание изображения здесь

введите описание изображения здесь

общеобразовательный
источник
4
Проблема не в DPI, а в размерах файла. Должно быть больше 1,5 Гбайт! Это так?
TFuto
размер изображения составляет 31,3 МБ (32 846 155 байт)
Educ
2
Извините, не размер файла. Размер в оперативной памяти. Если вы расшифруете это до нормального представления, то потребуется 18984x28591x3 байта ~ = 1,5 ГБайт. Вам понадобится хотя бы такой объем оперативной памяти, чтобы открыть его. И, вероятно, еще 1 Гбайт для манипулирования им. И 1 ГБ для ОС. Что-то такое.
TFuto
это моя личная фотография.
Могу ли
2
Да, я могу попробовать. :-) Вы также можете попробовать пакетный конвертер IrfanView, это может помочь.
TFuto

Ответы:

29

Я использовал ImageMagick в Ubuntu, чтобы изменить размеры этих больших картинок.

convert -resize 10% source.jpg dest.jpg

Это заняло некоторое время, но работало с 1 Гбайт оперативной памяти, инструмент создал для себя файл подкачки размером 4,7 Гбайт.

Более подробная информация о AskUbuntu .

TFuto
источник
3
Вы также можете дать ему конкретное разрешение, например,convert -resize 1898x2859 ...
Майкл Хэмптон
2
Также доступно на OSX.
о0 '.
1
Существует также версия для Windows.
Тонни
9

Теоретически, большинство форматов изображений можно постепенно уменьшать, не загружая все изображение в память, однако я не знаю каких-либо инструментов, которые действительно реализуют такую ​​функцию, кроме JPEG: это особенность в том, что вы можете не только уменьшать масштаб без загрузки полного разрешения, но также уменьшать масштаб без декодирования полного разрешения, благодаря творческому использованию DCT (JPEG кодируется в частотной области, что означает, что его не нужно декодировать с точно таким же разрешением, как у исходного изображения).

Инструмент декодирования JPEG по умолчанию (командная строка, пакет libjpeg-progs в Linux, ищите djpeg.exe для Windows) уменьшит размер огромного JPEG до того, как «обычное» приложение сможет даже завершить его загрузку:

djpeg -scale 1/8 huge_image_that_will_not_fit_in_your_ram.jpg >downscaled.ppm

Я также видел опцию downscale-while-loading в некоторых приложениях с графическим интерфейсом, но пока не могу ее вспомнить.

Benchmark!

Сравнение использования памяти и времени обработки ImageMagick против djpeg с уменьшением масштаба большого изображения ( piping to cjpeg , поэтому результирующее изображение также jpg, для справедливого сравнения с convert )

$ display -verbose input.jpg 
input.jpg JPEG 13114x11722 13114x11722+0+0 8-bit sRGB 30.75MB 6.690u 0:06.699

$ /usr/bin/time -f "time=%E mem=%MK" bash -c "convert input.jpg -scale '12.5%' output.jpg"
time=0:10.72 mem=1225844K

$ /usr/bin/time -f "time=%E mem=%MK" bash -c "djpeg -scale 1/8 input.jpg | cjpeg > output2.jpg"
time=0:00.88 mem=1412K

1,2 ГБ против 1,4 МБ и более чем в 10 раз медленнее - и это было на сравнительно небольшом изображении размером 13 x 11 КБ, которое могло полностью поместиться в ОЗУ, поэтому не происходило перестановок.

С другой стороны, использование djpeg для уменьшения масштаба также имеет свои ограничения: выбор коэффициента масштабирования ограничен, и метод повторной выборки изменить нельзя.

szulat
источник
7

Вы также можете попробовать использовать Picture Resizer на Windows (мне нравится этот инструмент)

Вы просто перетаскиваете изображение на этот простой EXE. Это особенно полезно, если у вас есть много изображений для конвертации, так как вы можете сделать много одновременно.

Весь конфиг сделан через именование EXE, которое является блестящим IMO

Я никогда не пробовал это с огромным файлом, хотя.

mateoc
источник