2016-08-27 4 views
0

J'ai une méthode pour traiter une image pour obtenir la couleur à pixels fixes:Obtenez des couleurs de pixel dans Android

public static void getColor(Bitmap btm,Activity act){ 
    int w = 300; 
    int h = 500; 
    btm=Bitmap.createScaledBitmap(btm, w,h, true); 

    color1= btm.getPixel(30, 50); 
    color2= btm.getPixel(50, 70); 
    color3= btm.getPixel(80,110); 
    color4= btm.getPixel(30, 120); 
    color5= btm.getPixel(100,150); 
    color6= btm.getPixel(200, 200); 
    color7= btm.getPixel(230, 300); 
} 

Le problème est qu'il donne des couleurs différentes dans les différents dispositifs selon la taille de l'écran même I donner une taille fixe ici:

btm=Bitmap.createScaledBitmap(btm, w,h, true); 

Est-il possible d'obtenir la même couleur au même pixel quelle que soit la taille de l'écran?

+0

Hiw récupérez-vous Bitmap? – Vyacheslav

+0

Je ne sais pas ce que vous voulez dire mais je lis Bitmap dans une autre activité comme ça Bitmap btm = BitmapFactory.decodeResource (this.getResources(), R.drawable.colors); et gérer les couleurs ici dans la méthode. – Radwa

Répondre

2

Essayez ceci. Je l'ai utilisé pour obtenir la couleur prédominante d'une image.

public static int getDominantColor(Bitmap bitmap) { 
    Bitmap newBitmap = Bitmap.createScaledBitmap(bitmap, 1, 1, true); 
    final int color = newBitmap.getPixel(0, 0); 
    newBitmap.recycle(); 
    return color; 
} 
+0

Merci beaucoup cela fonctionne bien – Radwa

0

Le problème ne réside pas dans la méthode que vous avez partagée, c'est la façon dont vous générez le bitmap et le transmettez à cette fonction qui a différentes tailles sur différents périphériques.

Le simple fait de redimensionner l'appareil à une taille définie ne signifie pas que tous les pixels auront la même couleur pour des tailles d'écran différentes. Ce problème ne peut pas être résolu en lisant la couleur à partir de bitmap, donc vous devez expliquer le but réel, de sorte que nous pouvons le résoudre avec différentes techniques.

+0

Mon but est de faire en sorte que toutes les mises en page et les contrôles de l'application aient les mêmes couleurs et soient comme un thème pour l'ensemble de l'application, et je l'utiliserai également dans d'autres applications. – Radwa

+0

A cet effet, prendre une capture d'écran et lire la couleur des pixels est l'option la plus inefficace, y a-t-il une raison pour laquelle vous avez décidé d'utiliser cette méthode? Avez-vous envisagé d'utiliser une autre approche? – codetiger

+0

Aussi, pour changer le thème, pourquoi devez-vous lire la couleur? – codetiger