Android 字体 hsv 对比度,Android图像锐化,饱和度,色调,亮度和对比度

是的,android有一些操作颜色的工具,有些比其他更容易.做你特别要求所有图像的一般空间的唯一方法是修改单个像素.还有其他快速而肮脏的技巧要快得多,但精度要低得多(ColorFilter).

色相变换器:

private Bitmap adjustedHue(Bitmap o, int deg)

{

Bitmap srca = o;

Bitmap bitmap = srca.copy(Bitmap.Config.ARGB_8888, true);

for(int x = 0;x < bitmap.getWidth();x++)

for(int y = 0;y < bitmap.getHeight();y++){

int newPixel = hueChange(bitmap.getPixel(x,y),deg);

bitmap.setPixel(x, y, newPixel);

}

return bitmap;

}

private int hueChange(int startpixel,int deg){

float[] hsv = new float[3]; //array to store HSV values

Color.colorToHSV(startpixel,hsv); //get original HSV values of pixel

hsv[0]=hsv[0]+deg; //add the shift to the HUE of HSV array

hsv[0]=hsv[0]%360; //confines hue to values:[0,360]

return Color.HSVToColor(Color.alpha(startpixel),hsv);

}

从这里开始,饱和度/亮度是微不足道的.但是,虽然所有这些都能得到你想要的东西,但它有点慢. getPixel()函数特别强烈.如果您要实时修改这些内容,我建议首先“缓存”像素.例如,首先将所有HUE,SATURATION,VALUE和ALPHA值存储为2d数组,并调用THEM而不是每次轻微更改时调用getPixel()和Color.colorToHSV()都会大大加快代码速度.

此外,bitmap.getPixels()函数对我来说效果更好.您可以先存储它生成的数组,然后迭代它.

现在,虽然可以使用类似的像素特定方法(将V乘以某个值,并添加一些偏移)来完成亮度/对比度……但清晰度并非如此简单.清晰度不是一种基于颜色的孤立修改,而是对图像本身的修改(称为“卷积”).也就是说,变换需要知道关于相邻像素的某些信息才能工作.我不知道内置的Android功能.但它可以通过多种方式完成.

如果你想要一个“锐化”功能,我首先尝试一下“模糊”功能.这是一个类似的过程,但它更直观(更酷).实际上,您可以使用模糊来锐化图像.这个人在解释所有这些用于java(使用source / applets)方面做得非常好:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值