Quick and easy way to batch convert multiple HEIC to png or jpg on macOS?

Is there a quick and easy way to convert many HEIC files to png on macOS?

Example

Suppose we take some live photos on iPhone, airdrop them to MacBook, and we want to upload them to a site that only accepts .png files.

enter image description here

I've noticed if you simply change the extension from .HEIC to .png (e.g. in the above image), then as far as I can tell, the image file is treated accordingly by programs and it 'works'.

However, I guess the underlying file hasn't changed, so it could still contain live photo information (I think), which a normal png wouldn't have, which, in a worst case, could be a security risk or in less severe cases simply be an annoyance.

What I know so far

The best I can do right now is go through the files one by one renaming them. I would really like to know what other solutions are available (via point and click and terminal), and have a strong preference for not having to download any external software.


Solution 1:

To convert all .HEIC images in a directory to .png

Open terminal. cd to the directory where the .HEIC files you want to convert are stored.

Be careful, this will convert all .HEIC files in the directory - back them up first if you're not sure you want to do that just yet.

for f in *.HEIC
do sips -s format png "${f}" --out "${f%.*}.png"
done

If you want to convert and resize images

The following will convert and resize images so the maximum height and width is 400 pixels (but you can change 400 below to any value)

Be careful, this will convert and resize all .HEIC files in the directory - back them up first if you're not sure you want to do that just yet.

for f in *.HEIC
do sips -s format png "${f}" -Z 400 --out "${f%.*}.png"
done

Reference

  • sips documentation: https://ss64.com/osx/sips.html