≡ Menu

Howto: Linux convert an image between different formats from command prompt

Q. How do I convert images from a shell prompt? For example convert an image in the JPEG format to PNG or vise versa?

A. You need to use the convert command which is a member of the ImageMagick suite of tools. Use it to convert between image formats as well as
=> Resize an image
=> Blur an image
=> Crop an image
=> Despeckle an image
=> Dither an image
=> Draw on an image
=> Flip an image
=> Join an image
=> Re-sample, and much more.

Task: Convert an image in the JPEG format to PNG

Type the command as follows:
$ convert input.jpg output.png

Task: Resize the image

Resize and convert an image in the JPEG format to PNG
$ convert -resize 50% input.jpg output.png

You can also create a complex effect such as:
$ convert -size 360x85 xc:transparent -font Bookman-DemiItalic -pointsize 72 -draw "text 25,60 'nixCraft'" -channel RGBA -gaussian 0x6 -fill YellowGreen -stroke RosyBrown -draw "text 20,55 'nixCraft'" nixCraft.png


Share this tutorial on:

Like this? Follow us on Twitter OR support us by using Patreon

{ 5 comments… add one }
  • Dhaval April 18, 2008, 12:12 pm

    This website is the best …website for linux users.

    Thanks to Nixcraft.

  • pear December 14, 2009, 5:30 pm

    Hi ,

    I have converted *.bmp to *.ps, but the *.ps image appears to be small and displayed at the end of the page. How to delete the empty spaces and make it fit to the page with a full resolution.

    I had a similar problem with ps2pdf but i used ps2pdf -dEPSCrop *.ps , i got good result

    Similarly how to do with bmp to ps conversion? or is there any way to convert bmp to pdf directly with full size fit?

  • Dhavakumar February 1, 2010, 6:36 pm

    How to convert dot format to jpeg format

  • elwoode February 28, 2013, 9:47 am

    how do you convert all the files in the folder from .jpg to .png BUT keep the same names apart from the different exstension.
    I tried
    convert *.jpg *.png
    but of course I get a lot of png files with no names just *-0.png etc

    • Lev Lafayette November 18, 2014, 5:35 am

      This response is a year old, but perhaps someone else might find this useful. The core concept is that you’re doing the same command over multiple files i.e., a for loop. It should look something like this.

      for file in *.jpg ; do convert "${file}" "${file/%jpg/png}" ; done
Security: Are you a robot or human?

Leave a Comment

You can use these HTML tags and attributes: <strong> <em> <pre> <code> <a href="" title="">

   Tagged with: