我有一个Camera Activity,它使用自定义适配器封装ViewPager。当用户拍照时我将图片加载到viewPager中,因此用户可以在图片上滑动(例如Google相机应用)。我想用已过滤的图片(如Instagram)替换已拍摄的图片(ImageView中的位图)。
如何在ViewPager中替换/交换两个ImageView? 我知道这是一个虚拟的问题,但我找到了几个解决方案,而且它们都没有。
答案 0 :(得分:2)
使用:ImageView imageView1= ((ImageView) viewPager.findViewById (R.id.imageView1));
有关更多图像处理效果/过滤器,您可以查看:
Catalano Framework,它可以在Android桌面上运行。
http://code.google.com/p/catalano-framework/
示例:
FastBitmap fb = new FastBitmap(bitmap);
//If you want to apply threshold
Grayscale g = new Grayscale();
g.applyInPlace(fb);
Threshold t = new Threshold(120);
t.applyInPlace(fb);
bitmap = fb.toBitmap();
或者如果您不想使用任何库, 看看Android:图像处理 它有很棒的图像处理示例
public static Bitmap doGreyscale(Bitmap src) {
// constant factors
final double GS_RED = 0.299;
final double GS_GREEN = 0.587;
final double GS_BLUE = 0.114;
// create output bitmap
Bitmap bmOut = Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig());
// pixel information
int A, R, G, B;
int pixel;
// get image size
int width = src.getWidth();
int height = src.getHeight();
// scan through every single pixel
for(int x = 0; x < width; ++x) {
for(int y = 0; y < height; ++y) {
// get one pixel color
pixel = src.getPixel(x, y);
// retrieve color of all channels
A = Color.alpha(pixel);
R = Color.red(pixel);
G = Color.green(pixel);
B = Color.blue(pixel);
// take conversion up to one single value
R = G = B = (int)(GS_RED * R + GS_GREEN * G + GS_BLUE * B);
// set new pixel color to output bitmap
bmOut.setPixel(x, y, Color.argb(A, R, G, B));
}
}
// return final image
return bmOut;
}