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 [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
-~----------~----~----~----~------~----~------~--~---

Reply via email to