38

I want to convert a batch of images, nearly 100, from jpg to png format. How can I do this without renaming them, but instead actually converting the format?

  • Use the convert command. No, really. But you will want to rename them from something.jpg to something.png. – Jos Apr 29 '14 at 10:59
  • 1
    @jos, From your comment I don't understand that what should I do!! – opu 웃 Apr 29 '14 at 11:03
  • I wasn't finished editing ;-) First, use the convert command on a single .jpg file and see if it works. Then, write a script that loops over the .jpg files and converts them to .png files. – Jos Apr 29 '14 at 11:05
  • You not mentioned how can I use the convert command on a single .jpg file. And I don't know how to write a script that loops over the .jpg files. – opu 웃 Apr 29 '14 at 11:13
55

Try these commands,

mogrify -format png /path/*.jpg    

This will convert all the .jpg files into .png files and saves the converted files in the same directory.

mv /path/*.png ~/Desktop/pic

This will moves all the .png files(converted) to the pic directory which resides on the Desktop.

  • Should I change the directory? – opu 웃 Apr 29 '14 at 11:14
  • 1
    /path/*.jpg represents the directory where the .jpg files are stored. – Avinash Raj Apr 29 '14 at 11:30
  • I also tried this command after changing the directory: mogrify -format png .jpg This also works nicely. – opu 웃 Apr 29 '14 at 13:38
  • The answer below is better, as it takes into account the limits placed on ARGV. – Evan Carroll May 16 '17 at 2:57
  • There is a great guide here: algissalys.com/how-to/… Also covers changing the size of the image, which is useful ie. adding -resize 800x changes longest side to 800 :) – Craig Lambie Jul 17 '18 at 3:09
39

Using ImageMagick.

First install imagemagick:

sudo apt-get install imagemagick

Try converting just one image at first:

convert image.jpg image.png

Now convert all:

mogrify -format png *.jpg

EDIT

You also need to split it into chunks that will fit to avoid hitting the limit of how much you can put on a command line. This should work better:

find -name '*.jpg' -print0 | xargs -0 -r mogrify -format png

The -print0 and -0 are used to handle spaces in filenames and the -r means don't run mogrify if there's nothing to do.

Source: https://stackoverflow.com/questions/1010261/running-a-batch-with-imagemagick

EDIT 2 Switched png and jpg as per @Glutanimate's comment.

EDIT 3 Changed png to jpg in last suggestion.

  • One image converted successfully. But when I used command to convert all its showing mogrify.im6: unable to open image ``*.png': No such file or directory @ error/blob.c/OpenBlob/2638.``mogrify.im6: unable to open file ``*.png' @ error/png.c/ReadPNGImage/3667. – opu 웃 Apr 29 '14 at 11:32
  • You will have to cd to that directory first. If they are in the desktop, run cd ~/Desktop first then try converting again. – Parto Apr 29 '14 at 11:34
  • I changed the directory – opu 웃 Apr 29 '14 at 11:35
  • @Parto I think it should be mogrify -format png *.jpg. The OP is asking about converting jpg → png. – Glutanimate Apr 29 '14 at 13:01
  • did not work for me with 14.04 @Parto – talha06 Jun 18 '16 at 14:48
0

I know it's been a long time since this question was put but there is one brilliant piece of software that has not been mentioned that I have used a lot.

http://photobatch.wikidot.com/ also known as Phatch. It literally converts anything from anything to anything else in image terms. It had not been updated for a while but now claims to be released for ubuntu 17.10. Give it a try. I'm confident you'll be very happy with it.

  • 2
    Tried to get this software, the "download" link to the deb file is missing from the above link, and the Ubuntu "store" version gave me this error: Detailed errors from the package manager follow: apt transaction returned result exit-failed Ubuntu v 18.10 maybe? Anyway - my experience. – Craig Lambie Jul 17 '18 at 2:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.