Androidカメラでランタイムに写真効果/フィルターを適用する方法を教えてください。JNI 、 OpenGl 、およびオープン CV を使用せずに。Java コードのみで効果を適用する必要があります。
質問する
2929 次
2 に答える
0
画像処理をチェックして、画像にさまざまな効果を適用します。キャプチャ後に画像に適用されるさまざまな効果を提供します。
画像にコントラスト効果を適用したい場合は、以下の方法を使用します。
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 final image return bmOut; }
上記の方法を次のように使用します。
BitMap bmp =BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); //Here you can define your image and convert it into Bitmap. bmp = createContrast(bm,75); mImageView.setImageBitmap(bmp);
于 2013-10-08T06:58:56.933 に答える