There is no way to write to a bitmap in its native format in 1.0, but  
you can read the values by calling copyPixelsToBuffer(). This fills  
out the buffer with whatever the native config is (alpha_8, 565, 4444,  
8888).

If you could extend the api post 1.0, what functionality would you  
like to see?

mike

On Sep 23, 2008, at 2:53 PM, Kurt Jacobs wrote:

Mike,
    Thanks for the explanation.  Is there a way (method that I could  
call) that I can convert the raw bitmap
to the multiplied version because doing the setPixel?

Thanks,
Kurt


On Tue, Sep 23, 2008 at 11:34 AM, Mike Reed <[EMAIL PROTECTED]> wrote:

The confusion (and I will try to update the dox to make this clearer)
is that the color int is in unpremultipled form, but the internal
format for Bitmap pixels is premultiplied.

"premultiplied" means that the r,g,b components have already been
multiplied by their respective alpha value. Thus 50% transparent Red
would be stored as 0x80800000

"unpremultipled" means that the r,g,b components are stored in their
raw form, independent of the alpha value. Thus 50% transparent Red
would be stored as 0x80FF0000

Thus when you specify 0x08040201 in unpremultiplied form (as you
should for the input to setPixels), that color is internally converted
to its premultiplied equivalent, which in this case happens to be
0x08000000. When you call getPixels(), the values are converted back
to unpremultiplied form automatically, but in this case there is no
change.

mike

On Sep 23, 2008, at 10:40 AM, JakeMaui wrote:


I have a bitmap issue.  I created a simple PNG that was 1 pixel high,
16 wide pure white.
I loaded the bitmap, extracted the pixels, changed the first one and
then created a bitmap
from the altered data.  The issue is that I thought that until I save
it, I would have a raw bitmap will all the bits set as I had set
them.  I found that the bits changed.
Does anybody know what I need to do to preserve the bitmap with the
bits that I set
into it?

sample code ...
  int picw=     bitmap.getWidth();
  int pich=bitmap.getHeight();
  int[] pix = new int[picw*pich];
  bitmap.getPixels(pix, 0, picw, 0, 0, picw, pich);

  // It's pure white at this point.
  // I set the first byte to this but when I pull it out of the newly
constructed
  // bitmap, it's 0x8000000
  pix[0]=0x08040201;
  createdBitmap = Bitmap.createBitmap(picw, pich,
Bitmap.Config.ARGB_8888);
  createdBitmap.setPixels(pix, 0, picw, 0, 0, picw, pich);

   // get pixels of newly created bitmap
   int picw=    embeddedBitmap.getWidth();
   int pich=embeddedBitmap.getHeight();
   int[] pix = new int[picw*pich];
   createdBitmap.getPixels(pix, 0, picw, 0, 0, picw, pich);

Results ....
00001000 00000100 00000010 00000001     before
00001000 00000000 00000000 0000000










--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to