首页 >> 大全

java 图像美白,使用NDK和JNI调整图片的亮度和对比度

2023-12-25 大全 38 作者:考证青年

-

使用NDK和JNI调整图片的亮度和对比度,类似QQ离线头像显示灰,使用mk编写脚本。

做过Java的同学可能经常会遇到一些关于图片处理的

例如类似QQ离线头像显示灰的。最快的算法是用来实现。这里通过Java调用JNI来处理每一个像素来实现。

1、对每一个像素点取出RGB每个通道的值R,G,B

2、=(R+G+B)/3;这个值是需要修改的值

3、将原来GRB的通道全设置成color的值

演示效果图:

原图

ndk对比度

ndk变灰

ndk图标变灰类似QQ头像离线显示-C++代码如下:

/*

* Class:

* : 变灰处理

* : ([III)[I

*/

"C" ( *env, type,

data_, jint w, jint h) {

jint *data = env->(data_, NULL);

if (data == NULL) {

0; /* null异常发生 */

int alpha = 0xFF > 16);//R

int green = ((color & ) >> 8);//G

int blue = color & ;//B

_亮度调亮才明白这张图片的梗_亮度调的图片

color = (red + green + blue) / 3;//这个值是需要修改的值

//将原来GRB的通道全设置成color的值

color = alpha | (color (, 0, size, data);

env->nts(data_, data, 0);

;

NDK调整图片的亮度和对比度-C++代码如下:

/*

* Class:

* : 调整图片的亮度和对比度

* : ([III)[I

*/

"C"

( * env, jclz, , jint width, jint ){

jint* = env->(, 0);

int = width * ;

//亮度、对比度 这两个参数可以传进来

float = 0.2f, = 0.2f;

int bab = (int)(255 * );

//开始处理

int a, r, g, b;

//实际设置的对比度

int cab = (int)( * 65536) + 1;

//遍历所有的像素点

int x = 0, y = 0;

for(x = 0; x < width; x++){

for(y = 0; y < ; y++){

//获得每个像素点的颜色值

int color = [y * width + x];

_亮度调的图片_亮度调亮才明白这张图片的梗

a = (color >> 24) & 0xFF;

r = (color >> 16) & 0xFF;

g = (color >> 8) & 0xFF;

b = color & 0xFF;

//美白argb的值都变大

//美黑argb的值都变小

int rr = r - bab;

int gr = g - bab;

int br = b - bab;

//边界检测

r = rr > 255 ? 255 : (rr < 0 ? 0 : rr);

g = gr > 255 ? 255 : (gr < 0 ? 0 : gr);

b = br > 255 ? 255 : (br < 0 ? 0 : br);

//~~对比度变化,255的一半来比较 策略:让比较亮的更加量,让比较暗的更加暗

//int ri = r - 128;

//int gi = g - 128;

//int bi = b - 128;

int ri = (((r - 128) * cab) >> 16) + 128; //位移十六位 相当于对比度扩大

int gi = (((g - 128) * cab) >> 16) + 128;

int bi = (((b - 128) * cab) >> 16) + 128;

//边界检测

r = rr > 255 ? 255 : (rr < 0 ? 0 : rr);

g = gr > 255 ? 255 : (gr < 0 ? 0 : gr);

b = br > 255 ? 255 : (br < 0 ? 0 : br);

//设置图像像素点的调整后的色值

//.(x, y, Color.argb(a, r, g, b));//参照的源码

int = (a nts( , , 0);

;

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了