Search code examples
svgimagemagickpngimagemagick-convert

Convert a bunch of images from svg to png


I need to convert from svg to png all the images in a folder. Lets say that images are called test1.svg, test2.svg, ... , testn.svg. Using the following script:

for i in *.svg
do
    convert "$i" PNG24:"$i".png
done

does the job correctly, and the images are called test1.svg.png, test2.svg.png, ... , testn.svg.png. My questions are:

1) Is it possible to make the output images be called test1.png, test2.png, ... , testn.png, essentially removing the 'svg' part from the name?

2) Is it possible to send them directly into some other directory?

Thanks!


Solution

  • Yes. You can make another directory and send them there like this:

    mkdir other
    for i in *.jpg; do
       convert "$i" PNG24:other/"${i%jpg}png"
    done
    

    If you have lots of images to do, and you are on macOS or Linux, I would recommend GNU Parallel to get the job done faster:

    mkdir other
    parallel convert {} PNG24:other/{.}.png ::: *jpg