我正在从一系列JPEG中生成GIF。
我正在为每个图像使用亮度对比度选项,如下所示:
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的所有单个图像?
答案 0 :(得分:2)
请参阅我对这些问题的回答:
由于-brightness-contrast
是图像操作符(不是图像设置),因此会立即应用于所有当前加载的图像(然后被遗忘):
当您将第一次时间应用时,只会加载thing1.jpg
。操作员应用于这一个图像。
当您应用第二时,thing2.jpg
已加载,但(已修改!)thing1.jpg
仍然加载。操作员适用于这两个图像。
要解释您的+我的命令版本是如何工作的,请注意以下几点:
因此,你应该试试这个:
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