I have a folder of png files that have transparent backgrounds. I would like to convert them from the command line and maintain the images' transparent backgrounds.
I'd appreciate any help.
Since jpgs don't support transparency so how can I specify the output jpg's background color's hex value? Right now it defaults to #ffffff
? I have tried this script, but it gives the output jpgs white backgrounds:
mogrify -quality 100 -format jpg *.png
Update
I created these png files in inkscape. I should mention that my goal in converting these pngs to jpgs is to get rid of jagged edges on circular or angular objects. The pngs currently have jagged edges and I read that converting them to jpgs might solve this problem. However converting via the method outlined in Christian Skjødt's answer gives the images even worse jagged edges. Is there a way that I can convert the pngs to jpg and also use anti-aliasing or maybe another technique to get rid of the jagged edges? Thanks for the help.
The JPEG format does not support transparency -- therefore maintaining the transparent backgrounds is not possible if you want to (or have to) use the JPEG format. See Wikipedia for an overview of the capabilities of different image formats.
Note that the JPEG 2000 does indeed support transparency, but it is much less common than the JPEG format. It depends on your use case whether this is a viable alternative.
To your second question:
To specify the background color when converting your images you can use the
-fill
option:Using
-background
provides similar results. Dont forget the-opaque none
.I'm sorry there is no way,
jpeg
format doesn't support analpha channel
so you can't have transparency.To smooth the edges you could create the PNGs 10x larger than your target size, then resize with anti-aliasing to JPG. I have done this using Python and the Python Imaging Library to good effect, but I'm not sure how to do it using other tools.
depending on what you're trying to do with the image, it might be possible to put the alpha channel to a separate grayscale image or a bitmask, and the program that are using the image would apply the auxiliary image as the translucent/transparent values. Although it's ultimately better to modify the program so it supports alpha png.