检查像素是透明的还是不透明的 - Android

时间:2014-04-13 17:22:17

标签: android android-layout bitmap png

我有一张PNG图片(角落里有透明像素),我正在尝试提取这些透明像素的颜色代码,我使用的是一个xxxx网站,它让我可以选择一个像素并返回其颜色代码;

选择透明像素后我得到: RGB代码:R:34 G:62 B:74

这不是逻辑

我在我的PNG图像中使用了BitmapDrawable //我认为不是正确的方法

Bitmap bitmap =((BitmapDrawable)image.getDrawable())。getBitmap();

有没有办法检查像素是否透明?

谢谢

3 个答案:

答案 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;
}