A quick search turns up quite a few Java PNG encoders with various license conditions.
Encoding a PNG will not require copying the PNG again so grab one with source, a license you like, and if necessary modify it to write directly to an output stream. On Monday, July 9, 2012 3:31:24 PM UTC+1, Latimerius wrote: > > Hello, > > I have a bunch of pixel data in an int[] that I want to turn into a > Bitmap instance. The problem is, the pixel data is so big it barely > fits into memory. I thought it would be no problem, surely I can pass > the int[] to a Bitmap factory method which simply wraps it in a Bitmap > instance. Unfortunately, this does not seem to be the case - > createBitmap(int[] colors, int width, int height, Bitmap.Config > config) seems to allocate its own int[] and copy the passed in int[] > into it, which fails if there is no memory for another copy. > > I simply need to turn the image stored in the int[] to a .png on > external storage so actually any of the following would be good enough > for me: > > - as mentioned above, a way to create a Bitmap so that it doesn't try > to allocate another useless copy of the data > > - an accessor on Bitmap to return the Bitmap's pixel store as an int[] > (that way I wouldn't have to allocate my own int[] and would be able > to write directly into the Bitmap-owned memory) > > - a way of accessing (an equivalent of) Bitmap.compress() > functionality without having a Bitmap > > Amazingly, none of the above seems to be available! Bitmaps tend to > be large objects in memory, surely there must be ways to handle them > in a memory-efficient manner... > > Cheers! > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

