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?
4 Answers
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.
Disclaimer:
If you want to keep the orientation of your image you have to add -auto-orient
to the command. You can find out why here. The mogrify command which keeps the orientation would look like this:
mogrify -auto-orient -format png /path/*.jpg
-
-
1
/path/*.jpg
represents the directory where the .jpg files are stored. Apr 29, 2014 at 11:30 -
I also tried this command after changing the directory:
mogrify -format png .jpg
This also works nicely.– opu 웃Apr 29, 2014 at 13:38 -
The answer below is better, as it takes into account the limits placed on ARGV. May 16, 2017 at 2:57
-
1
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, 2014 at 11:32 -
You will have to
cd
to that directory first. If they are in the desktop, runcd ~/Desktop
first then try converting again.– PartoApr 29, 2014 at 11:34 -
-
@Parto I think it should be
mogrify -format png *.jpg
. The OP is asking about converting jpg → png. Apr 29, 2014 at 13:01 -
Firstly, convert works. You don't need to test it. Secondly, a bash oneliner suits the need:
$ for file in Ground*jpg; do { \
echo "Converting $file to `echo $file|cut -d. -f1`.png" ;\
convert $file `echo $file|cut -d. -f1`.png ; } done
Rockin' it auldskewl ;)
Cheers
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.
-
2Tried 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. Jul 17, 2018 at 2:54
convert
command. No, really. But you will want to rename them from something.jpg to something.png.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.convert
command on a single .jpg file. And I don't know how to write a script that loops over the .jpg files.