0

我有一个应用程序,我想更改我的图片以设置对比度。当我使用相机中的图片时,此代码不起作用。但是,当我使用其他人的图片时(例如,来自互联网或 SDLR 相机的图片,它可以工作)。

也许是因为相机手机的照片不好还是什么?请帮助并拯救我!!!!

这是我的代码:

ImageView image = (ImageView) findViewById(R.id.imgView);
                Bitmap bMap = mPhoto;
                mPhoto = Bitmap.createBitmap(takeColorContrast(bMap,10));
                image.setImageBitmap(mPhoto);

和功能:

public  Bitmap takeColorContrast(Bitmap src, double value) {
     // src image size
     int width = src.getWidth();
     int height = src.getHeight();
     // create output bitmap with original size
     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.green(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.blue(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 final image
     return bmOut;
 }
4

0 回答 0