.png to .gif with convert tool.

Abarbarian

Acruncher
Joined
Sep 30, 2005
Messages
11,023
Reaction score
1,223
Had a trip to National Botanic Garden of Wales which has a butterfly house where I took some pictures. On arriving home i found I had what looked like a series of nine pictures that may I thought make a decent .gif.

wKGdnAZ.jpg


How would I do this in penguin land ?
With the "convert" tool I hear you cry. How did I use this tool ?

Placed all nine pictures in a new folder.

Opened a terminal in the folder or you could cd to the folder.

Used these two commands

Code:
$ convert -resize 1920x1200 -delay 100 -loop 0 *.jpg myimage.gif

$ convert -resize 640x400 -delay 50 -loop 0 *.jpg myimage.gif

Which gave these results, (click for real size)




I decided to use " -resize " as the originals were 4928x3264 which I could have used but it would have made a pretty big .gif.

Also there are a number of guides showing how to do this same thing out there on the net with " -delay 10 " which will give you a picture change every 0.1 second. That for me was a tad quick so I used " -delay 100 " to give me a one second change, " -delay 50 " for a half second change.
The " - loop 0 " makes the .gif loop continuously, pretty obvious. You can leave out the command to just run the sequence once. Or you can do " -loop 10 " which will repeat the sequence ten times, adjust the number to suit.

Running the above on my old 32 bit Dell I thought would take a long time but the command zipped through in less than a minute to give me the .gif. Pretty neat time for an old throwaway pc.

Help me out here folks,

Which of the .gif's look best from a picture speed changing viewpoint ? The half second or the one second speed.

Ta in advance folks
breakfast.gif
 
Last edited:
A nice and simple command line tool - I like it!

I prefer the slower speed, but smaller size image :).

I notice that you converted the images to a .GIF, which isn't ideal at handling high quality images (in terms of compression and colours). However, when you've uploaded it to imgur, it's converted to a .GIFV automatically - which is essentially a video file container.

You may get better results by converting the JPG images to a .MP4, and then let imgur convert it to GIFV - it'll mean you get the better image quality and a smaller file size :). I've got no idea how to do that in Linux though :lol:.
 
You may get better results by converting the JPG images to a .MP4, and then let imgur convert it to GIFV - it'll mean you get the better image quality and a smaller file size :). I've got no idea how to do that in Linux though :lol:.

To make a .mp4 from .jpg you can do this,

Code:
@mx16reserve:~/ZZZ/Picture conversions
$ ffmpeg -framerate 1 -i tp-%02d.jpg -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p output.mp4
ffmpeg version 2.8.6-1mx150+1 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.9.2 (Debian 4.9.2-10)
  configuration: --prefix=/usr --extra-version=1mx150+1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/i386-linux-gnu --incdir=/usr/include/i386-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv --disable-i686
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
[mjpeg @ 0x9951840] Changeing bps to 8
Input #0, image2, from 'tp-%02d.jpg':
  Duration: 00:00:09.00, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 1812x1200 [SAR 300:300 DAR 151:100], 1 fps, 1 tbr, 1 tbn, 1 tbc
[swscaler @ 0x9960e20] deprecated pixel format used, make sure you did set range correctly
[libx264 @ 0x9953ca0] using SAR=1/1
[libx264 @ 0x9953ca0] using cpu capabilities: MMX2 SSE2 SSE3 Cache64
[libx264 @ 0x9953ca0] profile High, level 4.2
[libx264 @ 0x9953ca0] 264 - core 142 r2431 a5831aa - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=1 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=20.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1812x1200 [SAR 1:1 DAR 151:100], q=-1--1, 1 fps, 16384 tbn, 1 tbc
    Metadata:
      encoder         : Lavc56.60.100 libx264
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Press [q] to stop, [?] for help
frame=    9 fps=0.9 q=-1.0 Lsize=    2896kB time=00:00:07.00 bitrate=3389.2kbits/s   
video:2895kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.031100%
[libx264 @ 0x9953ca0] frame I:3     Avg QP: 9.70  size:472415
[libx264 @ 0x9953ca0] frame P:5     Avg QP:12.25  size:257826
[libx264 @ 0x9953ca0] frame B:1     Avg QP:12.98  size:257534
[libx264 @ 0x9953ca0] consecutive B-frames: 77.8% 22.2%  0.0%  0.0%
[libx264 @ 0x9953ca0] mb I  I16..4:  7.6% 66.9% 25.5%
[libx264 @ 0x9953ca0] mb P  I16..4:  4.5% 41.1%  7.9%  P16..4: 14.1% 19.8% 11.7%  0.0%  0.0%    skip: 1.0%
[libx264 @ 0x9953ca0] mb B  I16..4:  1.3% 32.8%  1.9%  B16..8: 20.9% 20.6%  8.5%  direct:13.6%  skip: 0.4%  L0:20.6% L1:61.0% BI:18.3%
[libx264 @ 0x9953ca0] 8x8 transform intra:72.8% inter:52.7%
[libx264 @ 0x9953ca0] coded y,uvDC,uvAC intra: 97.0% 93.7% 91.1% inter: 82.1% 67.1% 29.3%
[libx264 @ 0x9953ca0] i16 v,h,dc,p:  5%  3%  8% 84%
[libx264 @ 0x9953ca0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 14% 16%  7% 10% 10%  9% 10%  9%
[libx264 @ 0x9953ca0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 13% 12%  8% 14% 13% 10%  9%  7%
[libx264 @ 0x9953ca0] i8c dc,h,v,p: 47% 22% 17% 13%
[libx264 @ 0x9953ca0] Weighted P-Frames: Y:20.0% UV:0.0%
[libx264 @ 0x9953ca0] ref P L0: 95.9%  1.1%  1.7%  1.3%
[libx264 @ 0x9953ca0] kb/s:2634.58

The blue highlight is the code. This made a working video playable in mpv but for some reason, probably a missing codec, not in vlc.
Imgur makes .gif's from videos from url's not it seems from uploads from a home pc. An I can not see how to upload a .mp4 to here. I'll find my dropbox password tomorrow and give a link to the .mp4 I created.

:cool:
 
It seems that the sites buggy software has struck again.

I highlighted the code whilst composing the post and everything looked as it should. However on completing posting the entry the blue highlighting has disappeared. :(
I am not a fan of the way quotes and code are done with the new layout, the old way was much more poster friendly. :rolleyes:
 
It seems that the sites buggy software has struck again.

I highlighted the code whilst composing the post and everything looked as it should. However on completing posting the entry the blue highlighting has disappeared. :(
I am not a fan of the way quotes and code are done with the new layout, the old way was much more poster friendly. :rolleyes:

The "code" tags take out all formatting - however, if you use the "quote" option instead, it should retain all formatting :thumb:. In this case, it's worked as the developers intended, even if it's not how it may be expected.
 
http://i.imgur.com/ODAlj32.gifv

Could not find a way to show a IMGUR.gifv so there is a link above for some more flutterbyes from the welsh national gardens. This time with a one and a half second delay.
The pupae cabinets are cool as are the strange caterpillars.

This is the code

Code:
$ convert -resize 1920x1200 -delay 150 -loop 0 *.JPG butterfly3.gif

On this old Dell

Code:
$ inxi -C
CPU:       Single core Intel Pentium 4 (-HT-) cache: 1024 KB
           clock speeds: max: 2992 MHz 1: 2992 MHz 2: 2992 MHz

it took about three minutes to convert 25 photographs to a .gif. On a modern pc it would be much faster. The time taken is not half bad as I was surfing the net whilst the conversion was running.
 
Last edited:
The "code" tags take out all formatting - however, if you use the "quote" option instead, it should retain all formatting :thumb:. In this case, it's worked as the developers intended, even if it's not how it may be expected.

Ok thanks for the explanation. A pox on developers who think it is cool to take a way that working and "improve" it. All that these so called improvements do is put use users in a constant looping learning cycle and nine times out of ten they do not really improve anything.

rant rant rant :rolleyes:
 
Neat to know but a tad long winded for me. All that signing in etc etc and waiting for the site to load etc etc. I'll check it out if I ever find the time. :cool:


Nah its not long winded, it does it for you. :)
 
You may get better results by converting the JPG images to a .MP4, and then let imgur convert it to GIFV - it'll mean you get the better image quality and a smaller file size :). I've got no idea how to do that in Linux though :lol:.

I managed to make a .mp4 file
To make a .mp4 from .jpg you can do this,

Code:
@mx16reserve:~/ZZZ/Picture conversions
$ ffmpeg -framerate 1 -i tp-%02d.jpg -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p output.mp4
ffmpeg version 2.8.6-1mx150+1 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.9.2 (Debian 4.9.2-10)
  configuration: --prefix=/usr --extra-version=1mx150+1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/i386-linux-gnu --incdir=/usr/include/i386-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv --disable-i686
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
[mjpeg @ 0x9951840] Changeing bps to 8
Input #0, image2, from 'tp-%02d.jpg':
  Duration: 00:00:09.00, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 1812x1200 [SAR 300:300 DAR 151:100], 1 fps, 1 tbr, 1 tbn, 1 tbc
[swscaler @ 0x9960e20] deprecated pixel format used, make sure you did set range correctly
[libx264 @ 0x9953ca0] using SAR=1/1
[libx264 @ 0x9953ca0] using cpu capabilities: MMX2 SSE2 SSE3 Cache64
[libx264 @ 0x9953ca0] profile High, level 4.2
[libx264 @ 0x9953ca0] 264 - core 142 r2431 a5831aa - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=1 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=20.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1812x1200 [SAR 1:1 DAR 151:100], q=-1--1, 1 fps, 16384 tbn, 1 tbc
    Metadata:
      encoder         : Lavc56.60.100 libx264
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Press [q] to stop, [?] for help
frame=    9 fps=0.9 q=-1.0 Lsize=    2896kB time=00:00:07.00 bitrate=3389.2kbits/s  
video:2895kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.031100%
[libx264 @ 0x9953ca0] frame I:3     Avg QP: 9.70  size:472415
[libx264 @ 0x9953ca0] frame P:5     Avg QP:12.25  size:257826
[libx264 @ 0x9953ca0] frame B:1     Avg QP:12.98  size:257534
[libx264 @ 0x9953ca0] consecutive B-frames: 77.8% 22.2%  0.0%  0.0%
[libx264 @ 0x9953ca0] mb I  I16..4:  7.6% 66.9% 25.5%
[libx264 @ 0x9953ca0] mb P  I16..4:  4.5% 41.1%  7.9%  P16..4: 14.1% 19.8% 11.7%  0.0%  0.0%    skip: 1.0%
[libx264 @ 0x9953ca0] mb B  I16..4:  1.3% 32.8%  1.9%  B16..8: 20.9% 20.6%  8.5%  direct:13.6%  skip: 0.4%  L0:20.6% L1:61.0% BI:18.3%
[libx264 @ 0x9953ca0] 8x8 transform intra:72.8% inter:52.7%
[libx264 @ 0x9953ca0] coded y,uvDC,uvAC intra: 97.0% 93.7% 91.1% inter: 82.1% 67.1% 29.3%
[libx264 @ 0x9953ca0] i16 v,h,dc,p:  5%  3%  8% 84%
[libx264 @ 0x9953ca0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 14% 16%  7% 10% 10%  9% 10%  9%
[libx264 @ 0x9953ca0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 13% 12%  8% 14% 13% 10%  9%  7%
[libx264 @ 0x9953ca0] i8c dc,h,v,p: 47% 22% 17% 13%
[libx264 @ 0x9953ca0] Weighted P-Frames: Y:20.0% UV:0.0%
[libx264 @ 0x9953ca0] ref P L0: 95.9%  1.1%  1.7%  1.3%
[libx264 @ 0x9953ca0] kb/s:2634.58

The blue highlight is the code. This made a working video playable in mpv but for some reason, probably a missing codec, not in vlc.
Imgur makes .gif's from videos from url's not it seems from uploads from a home pc. An I can not see how to upload a .mp4 to here. I'll find my dropbox password tomorrow and give a link to the .mp4 I created.

:cool:

Here is a dropbox link for the .mp4. To be honest it looks pretty much the same quality as the .gif's. :cool:
 
Back
Top