首页 文章

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

提问于
浏览
0

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

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

那不是逻辑

我在我的PNG图片中使用了BitmapDrawable //我觉得这不是一个正确的方法

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

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

谢谢

3 回答

  • 0

    这个被接受的方法也是正确的我认为如果使用这个更好:

    if(sourceBitmap1.getPixel(x,y)== Color.TRANSPARENT)

  • 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;
    }
    
  • 7
    Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
    int transparency = ((bitmap.getPixel(x,y) & 0xff000000) >> 24);
    

    transparency 将介于 0completely transparent )和 255completely opaque )之间 .

相关问题