[Linux, JPEG-и из фотоаппарата] слишком большой размер

sergeikozyr

Во-первых, довольно большой размер: 1600x1200. Во вторых такой jpeg весит от мегабайта до 2.6 (у меня скриншот такого размера в png весит меньше). Как можно уменьшить объём этой бандуры используя imagemagick?

juliuzz

1600x1200
целых 2 мегапикселя!
о май гад!
дай погонять! :D

sergeikozyr

пох, по-моему, там и 800x600 хватит, всё равно один трешак.

sergeikozyr

Дополнительная инфа: питоновый кодик показывает:

from PythonMagick import Image
image = Image ('picture.JPG')
print image.depth

8

bestpilot8

Повысить компрессию жопега (раза в 2-4, вообще по наличию артефактов на итоговой картинке проверять надо) и/или уменьшить разрешение. Как именно это делается, должно быть написано в мануале. Вообще меньше полумегабайта (в среднем) жопеги в исходном разрешении весить не должны, а то артефакты уже видимыми станут.
Вообще это можно вытворить с помощью XnView - там пакетная обработка через GUI делается (Convert, Ctrl+u можно обойтись без мануалов. Программка кроссплатформенная, хотя и не open source. www.xnview.com

dgaf

convert -quality 90%

yulya

скриншот такого размера в png весит меньше
а попробуй закодировать в png скриншот своей фотографии в jpg

sergeikozyr

Уфффф, какой страшный, к счастью, он не подошёл тем, что не умеет ходить по каталогам с кириллическими именами. Боясь, я подсунул ему LC_ALL=ru_RU.utf8, но ничего не изменилось :grin:
Да и судя по тому, как сделана там конвертация, удобнее будет набросать скриптик, закидывать нужные фотки в какую-нибудь директорию и применять его ко всем файлам в той директории.

sergeikozyr

Ага, вот оно. Весит 2.6 - сейчас понятно, т.е. 2.6Мб jpeg на самом деле png-шки. Ура. Ща всё конвертируем на%уй!

tokuchu

Как можно уменьшить объём этой бандуры используя imagemagick?
man convert?
Там ищи опции scale, quality.
jpeg в png некошерно конвертить, т.к.:
1) если картинка без резких границ, то jpeg пожмёт её лучше
2) если она была с резкими границами, то jpeg на этих границах её уже изговнял :)

bestpilot8

Ммм, под виндой умеет. Под линуксом не проверял, конечно.

kruzer25

если она была с резкими границами, то jpeg на этих границах её уже изговнял
А разве фотоаппараты/мобильники сохраняют фотки в jpeg не с качеством 100%?

juliuzz

А разве фотоаппараты/мобильники сохраняют фотки в jpeg не с качеством 100%?
:lol::lol::lol:

bestpilot8

Жопег не может не испортить картинку по определению (это формат сжатия с потерей данных). К тому же, что считать сотней процентов? У Фотошопа, скажем, просто шкала от 1 до 12. Более того, практика показывает, что даже в двух разных программах с "процентами" (со шкалой от 1 до 100) одинаковые цифры могут означать разный уровень сжатия (lightroom и xnview, например).
Фотоаппараты могут сохранять жопеги с минимальным сжатием (порядка 1:4...1:6) и минимальной потерей данных, но не без этих самых потерь. Правда, ещё потери жопега зависят от алгоритмов его создания, и в фотиках, особенно мелких (в которые не ставят мощных процессоров из-за их высокого энергопотребления эти алгоритмы далеко не лучшие.

sergeikozyr

Не совсем подходит. Я ещё хочу масштабировать рисунки, чтобы они лезли в прямоугольник 1280x960 - как это сделать с помощью convert не изменяя пропорция картинки непонятно.

dgaf

-resize

tokuchu

Не совсем подходит. Я ещё хочу масштабировать рисунки, чтобы они лезли в прямоугольник 1280x960 - как это сделать с помощью convert не изменяя пропорция картинки непонятно.
Он всё умеет, только описания опций скудные. :(

kruzer25

Жопег не может не испортить картинку по определению (это формат сжатия с потерей данных).
Да, это формат сжатия с потерей данных и с настраиваемым уровнем этой потери.
Например, какой-нибудь Xvid - тоже формат сжатия с потерей данных, но никто не мешает мне выставить там соответствующий уровень качества и получить картинку, на 100% совпадающую с исходной.
Правда, ещё потери жопега зависят от алгоритмов его создания, и в фотиках, особенно мелких (в которые не ставят мощных процессоров из-за их высокого энергопотребления эти алгоритмы далеко не лучшие.
Это необязательно значит, что в фотиках будут некачественные фотки - это может означать и то, что в фотиках будут получаться слишком тяжёлые фотки (потому что места там как раз завались).
ЗЫ: Из википедии:
Since the quantization stage always results in a loss of information, JPEG standard is always a lossy compression codec. (Information is lost both in quantizing and rounding of the floating-point numbers.)
Так что именно в JPEG картинки действительно не могут быть без потерь, но твои слова от этого верными не становятся.

kruzer25

:lol: :lol: :lol:
Ты лопату забыл вставить.

bestpilot8

Например, какой-нибудь Xvid - тоже формат сжатия с потерей данных, но никто не мешает мне выставить там соответствующий уровень качества и получить картинку, на 100% совпадающую с исходной.
Так что именно в JPEG картинки действительно не могут быть без потерь...
Ты уж определись, что ли. Xvid даёт качество жопега лишь в ключевых кадрах/блоках, в промежуточных же кадрах оно только хуже. Если ты соглашаешься, что жопег не может быть без потерь, то ты противоречишь своим ста процентам из первой цитаты.
Это необязательно значит, что в фотиках будут некачественные фотки - это может означать и то, что в фотиках будут получаться слишком тяжёлые фотки (потому что места там как раз завались).
Картинка напрямую из фотика всегда хуже, чем из raw-конвертера (жопег, tiff или ещё что-то - разницы нет). Потому что вычислительные мощности фотиков, ограниченные энергопотреблением и необходимостью быстрой (в течение секунды или меньше) обработки, несравнимы с мощностями полноценных компов, и это ограничивает применение в фотиках сложных алгоритмов интерполяции.
Что касается соотношения качество/объём при сжатии интерполированной из raw картинки в жопег, то в фотиках оно также наверняка ниже, чем у компов. Это означает либо более низкое качество при равном объёме, либо больший объём при равном качестве, разницы тут никакой. Впрочем, картинки, сжимаемые жопегом, на фотоаппаратах и у raw-конвертеров разные, так что сравнить напрямую не получится, да и разница, скорее всего, была бы невелика.

sergeikozyr

пенартур, плз, если хочешь посраться - писдуй отсюда, заводи свой тред. :D

conv3rsje

+1 к идлу
Если мне не изменяет память, то -resize 1280x960 сделает то что ты хочешь.

kruzer25

если хочешь посраться - писдуй отсюда, заводи свой тред.
Надо же - сам развёл срач и сам же просишь его не разводить :lol:

kruzer25

Это означает либо более низкое качество при равном объёме, либо больший объём при равном качестве, разницы тут никакой
Если бы в jpeg можно было класть фотки без потерь качества - это означало бы бОльший объём при 100% качестве, вот и всё.
Оставить комментарий
Имя или ник:
Комментарий: