私はアプリを持っていて、画像を変更してコントラストを設定したいと考えています。カメラからの写真を使用すると、このコードは機能しません。しかし、他の人からの写真 (たとえば、インターネットや 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;
}