Questions and postings pertaining to the usage of ImageMagick regardless of the interface. This includes the command-line utilities, as well as the C and C++ APIs. Usage questions are like "How do I use ImageMagick to create drop shadows?".
xereeto
Posts: 2 Joined: 2013-09-11T15:08:42-07:00
Authentication code: 6789
Post
by xereeto » 2013-09-11T15:16:03-07:00
Hi,
Normally if I want to add an overlay to a gif, I'd use
Code: Select all
convert animation.gif -coalesce -geometry +0+0 null: overlay.png -layers composite -layers optimize animation_with_overlay.gif
But is there a way to add a different overlay per frame, without splitting the gif up?
For example:
overlay1.png frames 1-12
overlay2.png frames 13-24
overlay3.png frames 25-36
Is that possible with imagemagick?
Thank you!
fmw42
Posts: 25562 Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA
Post
by fmw42 » 2013-09-11T15:33:59-07:00
I do not think that is possible. My understanding is that you would have to coalesce groups of frames and then process each set separately and then put them all back together in a animation. However, I will defer to anyone else who has a better way.
I suspect you can do some thing like
convert animation.gif[0-11] -coalesce -geometry +0+0 null: overlay1.png -layers composite -layers optimize animation_with_overlay1.gif
convert animation.gif[12-23] -coalesce -geometry +0+0 null: overlay2.png -layers composite -layers optimize animation_with_overlay2.gif
...
then
convert animation_with_overlay1.gif animation_with_overlay2.gif -coalesce -layers optimize final_animation.gif
I am not sure if -coalesce or -layers optimize is needed for the last command.
In the first sequence of commands you might want to save the results to miff format for quality and then convert to gif at the end when you have each set of miff files.
snibgo
Posts: 12159 Joined: 2010-01-23T23:01:33-07:00
Authentication code: 1151
Location: England, UK
Post
by snibgo » 2013-09-11T15:41:48-07:00
A single command is possible, something like this (Windows) script:
Code: Select all
convert ^
animation.gif[0-11] -coalesce null: overlay1.png -layers composite ^
( animation.gif[1-23] -coalesce null: overlay2.png -layers composite ) ^
( animation.gif[24-35] -coalesce null: overlay3.png -layers composite ) ^
-layers optimize o.gif
xereeto
Posts: 2 Joined: 2013-09-11T15:08:42-07:00
Authentication code: 6789
Post
by xereeto » 2013-09-12T14:39:03-07:00
I take it the same command could be used in a Unix environment, switching the "^"s for "\"s?
fmw42
Posts: 25562 Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA
Post
by fmw42 » 2013-09-12T14:56:19-07:00
In unix, you also have to escape the parens
convert \
animation.gif[0-11] -coalesce null: overlay1.png -layers composite \
\( animation.gif[1-23] -coalesce null: overlay2.png -layers composite \) \
\( animation.gif[24-35] -coalesce null: overlay3.png -layers composite \) \
-layers optimize o.gif