Применяется ли яркость-контраст кумулятивно при создании GIF-файлов?

Я создаю GIF из последовательности JPEG.

Я использую параметр яркости-контрастности для каждого изображения следующим образом:

convert -loop 0 -layers optimize
-delay 10 thing1.jpg -brightness-contrast 5x5 
-delay 10 thing2.jpg -brightness-contrast 5x5
-delay 10 thing3.jpg -brightness-contrast 5x5
-delay 10 thing4.jpg -brightness-contrast 5x5
thing.gif

Что я заметил, так это то, что изменения яркости и контрастности, кажется, применяются кумулятивно, причем первое изображение подвергается наибольшему воздействию. То, что я ищу, - это применить одинаковую настройку яркости и контрастности ко всем изображениям, но вместо этого первое изображение кажется увеличенным на 40%, второе - на 30% и т. д.

Кто-нибудь еще испытал это? Есть ли способ применить одно и то же изменение ко всем отдельным изображениям, которые используются для создания GIF?


person mhawthorne    schedule 17.12.2014    source источник


Ответы (1)


Смотрите мои ответы на эти вопросы:

Поскольку -brightness-contrast является оператором изображения (а не параметром изображения), он применяется немедленно ко всем загруженным в данный момент изображениям (и затем забывается):

  1. Когда вы применяете его в первый раз, загружается только thing1.jpg. Оператор применяется к этому одному изображению.

  2. Когда вы применяете его второй раз, загружается thing2.jpg, но также загружается (уже измененный!) thing1.jpg. Оператор применяется к обоим этим изображениям.

Чтобы объяснить, как работают ваши + мои версии команды, имейте в виду следующее:

  • -loop 0 : настройка изображения
  • -delay 10 – это настройка изображения.
  • -brightness-contrast 5x5 : оператор изображения
  • -layers Optimize : это оператор последовательности изображений.

Поэтому вы должны попробовать это:

convert -loop 0                  \
        -delay 10                \
         thing1.jpg              \
         thing2.jpg              \
         thing3.jpg              \
         thing4.jpg              \
        -brightness-contrast 5x5 \
        -layers optimize         \
         thing.gif

Если вам нужно применять разные значения, но не кумулятивно, контролируя каждый уровень яркости-контрастности отдельно, следует использовать брекетинг \(.....\) для 'в стороне'-обработки изображений:

convert -loop 0                                                 \
         \( thing1.jpg -delay 10  -brightness-contrast 5x5 \)   \
         \( thing2.jpg -delay 20  -brightness-contrast 10x20 \) \
         \( thing3.jpg -delay 100 -brightness-contrast 10% \)   \
         \( thing4.jpg -delay 1   -brightness-contrast 0x50 \)  \
        -layers optimize                                        \
         thing.gif
person Kurt Pfeifle    schedule 17.12.2014