2012-04-17 21 views

Odpowiedz

7

Hi można dokonać biały obraz czarno-N Używanie kontrast.

Zobacz kod ..

public static Bitmap createContrast(Bitmap src, double value) { 
    // image size 
    int width = src.getWidth(); 
    int height = src.getHeight(); 
    // create output bitmap 
    Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig()); 
    // color information 
    int A, R, G, B; 
    int pixel; 
    // get contrast value 
    double contrast = Math.pow((100 + value)/100, 2); 

    // scan through all pixels 
    for(int x = 0; x < width; ++x) { 
     for(int y = 0; y < height; ++y) { 
      // get pixel color 
      pixel = src.getPixel(x, y); 
      A = Color.alpha(pixel); 
      // apply filter contrast for every channel R, G, B 
      R = Color.red(pixel); 
      R = (int)(((((R/255.0) - 0.5) * contrast) + 0.5) * 255.0); 
      if(R < 0) { R = 0; } 
      else if(R > 255) { R = 255; } 

      G = Color.red(pixel); 
      G = (int)(((((G/255.0) - 0.5) * contrast) + 0.5) * 255.0); 
      if(G < 0) { G = 0; } 
      else if(G > 255) { G = 255; } 

      B = Color.red(pixel); 
      B = (int)(((((B/255.0) - 0.5) * contrast) + 0.5) * 255.0); 
      if(B < 0) { B = 0; } 
      else if(B > 255) { B = 255; } 

      // set new pixel color to output bitmap 
      bmOut.setPixel(x, y, Color.argb(A, R, G, B)); 
     } 
    } 

    return bmOut; 
} 

Ustaw podwójną wartość 50 na wezwanie Mathod. Dla przykładu createContrast(Bitmap src, 50)

+6

, to świetnie i działa idealnie, ale to powoli. Konwertuję 6 jpeg obrazów 300px * 300px na normalnym urządzeniu z Androidem i to zajmuje 6 sekund! czy jest coś, co mogę zrobić, aby skrócić ten czas? Mam na myśli to, że pomniejszam rozmiary obrazów! – Reza

1

pomocą wbudowanych metod:

public static Bitmap toGrayscale(Bitmap srcImage) { 

    Bitmap bmpGrayscale = Bitmap.createBitmap(srcImage.getWidth(), srcImage.getHeight(), Bitmap.Config.ARGB_8888); 

    Canvas canvas = new Canvas(bmpGrayscale); 
    Paint paint = new Paint(); 

    ColorMatrix cm = new ColorMatrix(); 
    cm.setSaturation(0); 
    paint.setColorFilter(new ColorMatrixColorFilter(cm)); 
    canvas.drawBitmap(srcImage, 0, 0, paint); 

    return bmpGrayscale; 
} 
Powiązane problemy