inzo inzo - 2 years ago 68
Swift Question

Using Huffman coding to compress images taken by the iPhone camera

Im thinking to use the Huffman coding to make an app that takes pictures right from the iPhone camera and compress it. Would it be possible for the hardware to handle the complex computation and building the tree ? In other words, is it doable?

Thank you

Answer Source

If you mean the image files (like jpg, png, etc), then you should know that they are already compressed with algorithms specific to images. The resulting files would not huffman compress much, if at all.

If you mean that you are going to take the UIImage raw pixel data and compress it, you could do that. I am sure that the iPhone could handle it.

If this is for a fun project, then go for it. If you want this to be a useful and used app, you will have some challenges

  1. It is very unlikely that Huffman will be better than the standard image compression used in JPG, PNG, etc.

  2. Apple has already seen a need for better compression and implemented HEIF in iOS 11. WWDC Video about HEIF

  3. They did a lot of work in the OS and Photos app to make sure to use HEIF locally, but if you share the photo it turns it into something anyone could use (e.g. JPG)

  4. All of the compression they implement uses hardware acceleration. You could do this too, but the code is a lot harder than Huffman.

So, for learning and fun, it's a good project -- it might be easier to do as a Mac app instead, but for something meant to be real, it would be extremely hard to overcome the above issues.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download