码迷,mamicode.com
首页 > 其他好文 > 详细

光照效果函数

时间:2014-07-16 19:37:15      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:color   os   width   for   re   c   

// 光照效果函数
public static Bitmap changeToLight(Bitmap bitmap) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();

int pixColor = 0;
int R = 0;
int G = 0;
int B = 0;

int centerX = width /3;
int centerY = height / 3;
int radius = Math.min(centerX, centerY);

int strength = 150; // 光照强度 100~150
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);

int pos = 0, distance, result;
for (int y = 1; y < height - 1; y++) {
for (int x = 1; x < width - 1; x++) {
pos = y * width + x;
pixColor = pixels[pos];

R = Color.red(pixColor);
G = Color.green(pixColor);
B = Color.blue(pixColor);

// 计算当前点到光照中心的距离,平面座标系中求两点之间的距离
distance = (centerY - y)*(centerY - y) + (centerX - x)*(centerX-x);
if (distance < radius * radius) {
// 按照距离大小计算增加的光照值
result = (int) (strength * (1.0 - Math.sqrt(distance)/radius));
R += result;
G += result;
B += result;

R = Math.min(255, Math.max(0, R));
G = Math.min(255, Math.max(0, G));
B = Math.min(255, Math.max(0, B));

pixels[pos] = Color.rgb(R, G, B);
}
}
}

Bitmap returnBitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.RGB_565);
returnBitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return returnBitmap;
}

光照效果函数,布布扣,bubuko.com

光照效果函数

标签:color   os   width   for   re   c   

原文地址:http://www.cnblogs.com/clarence/p/3837468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!