我有一张PNG图片(角落里有透明像素),我正在尝试提取这些透明像素的颜色代码,我使用的是一个xxxx网站,它让我可以选择一个像素并返回其颜色代码;
选择透明像素后我得到: RGB代码:R:34 G:62 B:74
这不是逻辑
我在我的PNG图像中使用了BitmapDrawable //我认为不是正确的方法
Bitmap bitmap =((BitmapDrawable)image.getDrawable())。getBitmap();
有没有办法检查像素是否透明?
谢谢
答案 0 :(得分:7)
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
int transparency = ((bitmap.getPixel(x,y) & 0xff000000) >> 24);
transparency
介于 0 (completely transparent
)和 255 (completely opaque
)之间。
答案 1 :(得分:2)
这种被接受的方法是正确的,如果使用这个我认为更好:
if(sourceBitmap1.getPixel(x,y)== Color.TRANSPARENT)
答案 2 :(得分:-1)
如果您想在触摸视图时知道透明度,我使用下面的功能检查触摸的像素是否透明:
public boolean isBitmapTransparent(ImageView imageview){
boolean isTransparent = false;
final Bitmap bitmap = ((BitmapDrawable)imageview.getBackground()).getBitmap();
imageview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int eventPadTouch = event.getAction();
switch (eventPadTouch) {
case MotionEvent.ACTION_DOWN:
if (event.getX()>=0 &
event.getY()>=0 &
event.getX()<bitmap.getWidth() &
event.getY()<bitmap.getHeight()) {
if (bitmap.getPixel((int)event.getX(),(int)event.getY())!=0) {
//TODO pixel not transparent
isTransparent = false;
}
else{
//TODO pixel transparent
isTransparent = true;
}
}
return true;
}
return false;
}
});
return isTransparent;
}