Как я могу открыть очень, очень большое изображение, чтобы уменьшить его? - Фотопедия
14 голосов
/ 17 октября 2014

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

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

enter image description here

enter image description here

Ответы [ 3 ]

29 голосов
/ 17 октября 2014

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

convert -resize 10% source.jpg dest.jpg

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

Больше информации на AskUbuntu .

9 голосов
/ 17 октября 2014

Теоретически, большинство форматов изображений можно постепенно уменьшать, не загружая все изображение в память, однако я не знаю каких-либо инструментов, которые действительно реализуют такую ​​функцию, кроме 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 уменьшение большого изображения (по конвейеру до cjpeg , поэтому полученное изображение также jpg, для справедливое сравнение с конвертируем )

$ 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 для уменьшения масштаба также имеет свои ограничения: выбор коэффициента масштабирования ограничен, и метод повторной выборки изменить нельзя.

7 голосов
/ 17 октября 2014

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

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

Все настройки выполняются через именование EXE, что является блестящим IMO

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

Добро пожаловать на сайт Фотопедия, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...