У мене є зображення з роздільною здатністю 18984x28591px, але я не можу відкрити його за допомогою Paint або за допомогою редактора Pixlr, щоб зменшити його розмір.
Як я можу конвертувати або відкрити це велике зображення на своєму ноутбуці?
У мене є зображення з роздільною здатністю 18984x28591px, але я не можу відкрити його за допомогою 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 vs 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 К х 11 К, яке могло повністю вміститися в ОЗУ, так що не відбулося заміну.
З іншого боку, використання djpeg для зменшення масштабу також має свої обмеження: вибір коефіцієнта масштабування обмежений, а метод перекомпонування неможливо змінити.
Ви також можете спробувати використати Picture Resizer у Windows (я люблю цей інструмент)
Ви просто перетягуєте зображення на цьому простому EXE. Це особливо корисно, якщо у вас є багато зображень для перетворення, оскільки ви можете робити багато за один раз.
Весь конфігурація робиться через іменування EXE, що є геніальним IMO
Я ніколи не пробував це з величезним файлом, хоча.