//LOMO效果
public static Bitmap changeToLomo(Bitmap bitmap) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int dst[] = new int[width*height];
bitmap.getPixels(dst, 0, width, 0, 0, width, height);
int ratio = width height ? height*32768/width : width*32768/height;
int cx = width 1;
int cy = height 1;
int max = cx * cx + cy * cy;
int min = (int) (max * (1 - 0.8f));
int diff = max - min;
int ri, gi, bi;
int dx, dy, distSq, v;
int R, G, B;
int value;
int pos, pixColor;
int newR, newG, newB;
for(int y=0; y height; y++){
for(int x=0; x width; x++){
pos = y*width + x;
pixColor = dst[pos];
R = Color.red(pixColor);
G = Color.green(pixColor);
B = Color.blue(pixColor);
value = R 128 ? R : 256-R;
newR = (value*value*value)/64/256;
newR = (R 128 ? newR : 255-newR);
value = G 128 ? G : 256-G;
newG = (value*value)/128;
newG = (G 128 ? newG : 255-newG);
newB = B/2 + 0x25;
//==========边缘黑暗==============//
dx = cx - x;
dy = cy - y;
if (width height)
dx = (dx * ratio) 15;
else
dy = (dy * ratio) 15;
distSq = dx * dx + dy * dy;
if (distSq min){
v = ((max - distSq) 8) / diff;
v *= v;
ri = (int)(newR * v) 16;
gi = (int)(newG * v) 16;
bi = (int)(newB * v) 16;
newR = ri 255 ? 255 : (ri 0 ? 0 : ri);
newG = gi 255 ? 255 : (gi 0 ? 0 : gi);
newB = bi 255 ? 255 : (bi 0 ? 0 : bi);
}
//==========边缘黑暗end==============//
dst[pos] = Color.rgb(newR, newG, newB);
}
}
Bitmap acrossFlushBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
acrossFlushBitmap.setPixels(dst, 0, width, 0, 0, width, height);
return acrossFlushBitmap;
}
LOMO效果-飞外
热门阅读
- 龙门古镇在哪里 0人看过
- 鸡蛋里面白色的东西是什么 0人看过
- 金桔核能吃吗 0人看过
- 生姜从地里挖出来后如何储存 0人看过
- 生蚝怎么存放过夜不死 0人看过
- 豆腐长黑毛还可以吃吗? 0人看过
- 3077代表什么 0人看过
- 茶里有咖啡因吗 0人看过
- 车厘子冷藏能放多久 0人看过
- 冬天水管子冻了怎么办 0人看过