2010-10-20 3 views
1

J'ai un fichier bitmap, qui sert de masque pour une vue. Il a plusieurs zones rectangulaires avec des couleurs différentes sur un fond blanc. Lorsque l'utilisateur touche la vue, j'utilise les coordonnées X et Y de cet événement pour rechercher la couleur du masque (qui n'est pas affichée) et faire les choses en fonction du code couleur retourné. Le problème est le suivant: le chargement de ce masque avec des résultats BitmapFactory dans un objet Bitmap mis à l'échelle. De cette façon, les couleurs se déforment un peu. Si j'ai par exemple un rectangle plein avec la couleur (155, 155, 0), alors ce sera comme (148, 158, 0), (150, 154, 0), et ainsi de suite. Mais j'ai besoin d'avoir la couleur exacte.Comment charger un bitmap brut, sans mise à l'échelle sur Android?

Alors, comment charger le bitmap brut, sans aucune mise à l'échelle/compression/truc comme ça?

Répondre

1

J'ai fait quelque chose de similaire, avec un fichier png, qui était stocké dans R.raw. L'utilisateur a cliqué sur une image, déclenchant l'événement onTouch de l'image colorée qui se trouvait derrière.

public static Bitmap loadBitmapFromView(View v) 
{ 
    Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888); 
    Canvas c = new Canvas(b); 
    v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); 
    v.draw(c); 
    return b; 
} 

@Override 
public boolean onTouch(View v, MotionEvent event) 
{ 
    Bitmap b = loadBitmapFromView(v); 
    long color = b.getPixel((int)event.getX(), (int)event.getY()); 
    //check what the color is, act accordingly 
} 
Questions connexes