I have this two images
text.gif
outline.gif
I want to Put the outline.gif above the text.gif
i use this command
convert text.gif null: outline.gif -matte -compose srcatop -layers composite -loop 0 glitter_outline.gif
but i got this output
This is not what i expected because the outline.gif is alternating with the text.gif
i want to show them at the same time
please help for the correct command...thnx
Overlaying Animation Above Animation
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: Overlaying Animation Above Animation
I am no expert at animation, but your two animation do not have the same number of frames and I suspect this will be key to overlaying them one-to-one.
identify text.gif
text.gif[0] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[1] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[2] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[3] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[4] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[5] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[6] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[7] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[8] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[9] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[10] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[11] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[12] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[13] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[14] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[15] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[16] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[17] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[18] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[19] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[20] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[21] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[22] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[23] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[24] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[25] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[26] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
identify outline.gif
outline.gif[0] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 30.9766kb
outline.gif[1] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 30.9766kb
outline.gif[2] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 30.9766kb
You either want to repeat the frames of the outline.gif to fill the same number of frames as in text.gif or choose one frame from the outline.gif and overlay it on each frame of the text.gif
identify text.gif
text.gif[0] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[1] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[2] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[3] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[4] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[5] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[6] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[7] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[8] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[9] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[10] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[11] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[12] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[13] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[14] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[15] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[16] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[17] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[18] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[19] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[20] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[21] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[22] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[23] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[24] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[25] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
text.gif[26] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 176.459kb
identify outline.gif
outline.gif[0] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 30.9766kb
outline.gif[1] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 30.9766kb
outline.gif[2] GIF 250x234 250x234+0+0 PseudoClass 256c 8-bit 30.9766kb
You either want to repeat the frames of the outline.gif to fill the same number of frames as in text.gif or choose one frame from the outline.gif and overlay it on each frame of the text.gif
Re: Overlaying Animation Above Animation
so do you mean there is no other shorter command if both animation have different # of frames?
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: Overlaying Animation Above Animation
As the outline.gif has 3 frames and the text.gif has 27 frames, they are multiples of each other. So just merge the outline 9 times to match the number of frames
convert \( text.gif -coalesce \) null: \( outline.gif outline.gif outline.gif outline.gif outline.gif outline.gif outline.gif outline.gif outline.gif -coalesce \) -layers Composite text_outline.gif
or
convert \( text.gif -coalesce \) null: \( outline.gif -write mpr:outline +delete \) \( mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline -coalesce \) -layers Composite text_outline.gif
Both work for me with your two images.
convert \( text.gif -coalesce \) null: \( outline.gif outline.gif outline.gif outline.gif outline.gif outline.gif outline.gif outline.gif outline.gif -coalesce \) -layers Composite text_outline.gif
or
convert \( text.gif -coalesce \) null: \( outline.gif -write mpr:outline +delete \) \( mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline -coalesce \) -layers Composite text_outline.gif
Both work for me with your two images.
- anthony
- Posts: 8883
- Joined: 2004-05-31T19:27:03-07:00
- Authentication code: 8675308
- Location: Brisbane, Australia
Re: Overlaying Animation Above Animation
I have outlined the method that would be used to merge two animations that have the same overall 'cycle time' though different number of frames.renxiii wrote:so do you mean there is no other shorter command if both animation have different # of frames?
See IM examples
Merging Time Disjoint Animations
http://imagemagick.org/Usage/anim_mods/#merge
Basically you need to double up and split the times on frames in each animation until the frame by frame timings of the animations match up, (and then animations also have the same number of frames). At that point the -layers composite can be used as descriped previously on the same page to do the overlay, and frame optimization can be used to make the animation smaller.
I had planned to create a simple -layers operation in IM to actually do this time synchronization, but I just never seem to get around to doing more programming in IM core.
PS; I would coaleasce the outline.gif animation ONCE, then use either -clone, or a -write MPR:label method.
See http://imagemagick.org/Usage/files/#mpr
and http://imagemagick.org/Usage/basics/#clone
Im really needs more people willing to to try and submit complete patches and additions to IM. Once there ability is proven, more direct SVN access to the source can be provided.
Anthony Thyssen -- Webmaster for ImageMagick Example Pages
https://imagemagick.org/Usage/
https://imagemagick.org/Usage/
- anthony
- Posts: 8883
- Joined: 2004-05-31T19:27:03-07:00
- Authentication code: 8675308
- Location: Brisbane, Australia
Re: Overlaying Animation Above Animation
One point about mpr: you can things of it as a multi-image save. Rather than just saving a single copy of the 'outline.gif' (and deleting the original) why not use it to copy 3 versions.fmw42 wrote:Code: Select all
convert \( text.gif -coalesce \) null: \( outline.gif -write mpr:outline +delete \) \( mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline mpr:outline -coalesce \) -layers Composite text_outline.gif
You don't even need to delete the original, and you can copy it more times than needed as it is the destination (first) sequence that determine the final number of images.
Code: Select all
convert \( text.gif -coalesce \) null: \
\( outline.gif -coalesce -write mpr:outline \
mpr:outline mpr:outline -write mpr:outlineX3 \
mpr:outlineX3 mpr:outlineX3 mpr:outlineX3 \) \
-layers Composite text_outline.gif
the use of mpr: to double, treble the number of frames is ver efficient. you can very quickly make a 1000 image sequence in this way without too many commands.
Cloning images using -clone OR mpr: is also highly memory efficient as the images are not being modified. As such the image data is not being duplicated or copied.
Anthony Thyssen -- Webmaster for ImageMagick Example Pages
https://imagemagick.org/Usage/
https://imagemagick.org/Usage/