У меня есть изображение с разрешением 18984x28591 пикселей, но я не могу открыть его с помощью Paint или редактора Pixlr, чтобы уменьшить его размер.
Как я могу преобразовать или открыть это большое изображение на своем ноутбуке?
Я использовал ImageMagick в Ubuntu, чтобы изменить размер этих больших изображений.
convert -resize 10% source.jpg dest.jpg
Это заняло некоторое время, но работало с 1 ГБ ОЗУ, инструмент создал для себя 4,7-гигабайтный файл подкачки.
Больше информации есть на AskUbuntu .
convert -resize 1898x2859 ...
Теоретически большинство форматов изображений можно уменьшать прогрессивно, без загрузки всего изображения в память, однако я не знаю каких-либо инструментов, реально реализующих такую возможность, кроме 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
Я также видел параметр уменьшения масштаба при загрузке в некоторых приложениях с графическим интерфейсом, но не могу вспомнить его в данный момент.
Сравнение использования памяти и времени обработки ImageMagick и djpeg при уменьшении масштаба большого изображения (конвейерное преобразование в 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 раз медленнее — и это было на относительно небольшом образе 13k x 11k, который мог полностью поместиться в ОЗУ, поэтому подкачки не происходило.
С другой стороны, использование djpeg для уменьшения масштаба также имеет свои ограничения: выбор коэффициента масштабирования ограничен, и метод передискретизации нельзя изменить.
Вы также можете попробовать использовать Picture Resizer в Windows (мне нравится этот инструмент)
Вы просто перетаскиваете изображение в этот простой EXE-файл. Это особенно полезно, если вам нужно преобразовать много изображений, поскольку вы можете конвертировать их одновременно.
Вся конфигурация выполняется с помощью именования EXE, что является блестящим IMO.
Я никогда не пробовал это с огромным файлом.
ТФуто
образование
ТФуто
образование
ТФуто
Чинмай Канчи