Android|Android Camera 实时滤镜(三)
一、基于Android平台基本滤镜算法的实现
1、Android提供了改变图像数值的方法ColorMatrix,通过ColorMatrix方法可以实现基本滤镜,如黑白、灰色、泛黄等效果。
2、通过ColorMatrix改变图像数值,生成变换矩阵,利用矩阵相乘,来改变每个点的像素值。
Matrix =>
r1 |
r2 |
r3 |
r4 |
r5 |
g1 |
g2 |
g3 |
g4 |
g5 |
b1 |
b2 |
b3 |
b4 |
b5 |
a1 |
a2 |
a3 |
【Android|Android Camera 实时滤镜(三)】a4 |
a5 |
变化以后
R'=R * r1+G * r2+B * r3+A * r4+r5;
G'=R * g1+G * g2+B *g3+A * g4+g5;
B'=R * b1+G * b2+B *b3+A * b4+b5;
A'=R * a1+G * a2+B * a3+A * a4+a5;
第1~3列是控制色相的,第4列是控制透明度的,第5列是分量的增加值
3、R、G、B、A系数值变化会修改图像的效果
(1)对角线值为1.0,其他为0时,图像保证的是原图像
图像原图 |
|||||
R |
1.0 |
0 |
0 |
0 |
0 |
G |
0 |
1.0 |
0 |
0 |
0 |
B |
0 |
0 |
1.0 |
0 |
0 |
A |
0 |
0 |
0 |
1.0 |
0 |
文章图片
(2)对角线值若大于1.0,其他为0时,图像偏亮
图像偏亮 |
|||||
R |
2.0 |
0 |
0 |
0 |
0 |
G |
0 |
2.0 |
0 |
0 |
0 |
B |
0 |
0 |
2.0 |
0 |
0 |
A |
0 |
0 |
0 |
2.0 |
0 |
文章图片
(3)对角线值若小于1.0,其他为0时,图像偏暗
图像偏暗 |
|||||
R |
0.5 |
0 |
0 |
0 |
0 |
G |
0 |
0.5 |
0 |
0 |
0 |
B |
0 |
0 |
0.5 |
0 |
0 |
A |
0 |
0 |
0 |
0.5 |
0 |
文章图片
(4)设定图像为灰色,通过查资料 R 0.3 G0.59 B 0.11
图像偏暗 |
|||||
R |
0.3f |
0.59f |
0.11f |
0 |
0 |
G |
0.3f |
0.59f |
0.11f |
0 |
0 |
B |
0.3f |
0.59f |
0.11f |
0 |
0 |
A |
0 |
0 |
0 |
1.0 |
0 |
文章图片
4、根据以上的实现,实现基本滤镜的算法是
public Bitmap getBlackStyle(Bitmap src){Bitmap dst = Bitmap.createBitmap(src.getWidth(),src.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(dst);
ColorMatrix cm = new ColorMatrix();
//设定图像为灰色,通过查资料 R 0.3 G0.59 B 0.11
cm.set(new float[] {
0.3f, 0.59f, 0.11f, 0, 0,
0.3f, 0.59f, 0.11f, 0, 0,
0.3f, 0.59f, 0.11f, 0, 0,
0, 0, 0, 1, 0 });
Paint paint = new Paint();
paint.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(src, 0, 0, paint);
// 保存图像
canvas.save(Canvas.ALL_SAVE_FLAG);
// 存储
canvas.restore();
return dst;
}
三、后滤镜时代
在网上看到一些信息和相机应用,很多相机玩家对手机相机的使用是越来越多,作为手机相机的开发者需要有更多的创意和特性为手机相机添彩!如下几点相机的发展方向供大家参考:
文章图片
(1)实时滤镜
VIDA 是一款来自国内团队的照相应用,它的一大特色就是实时滤镜,在拍摄的同时你已经可以预览到最终的成品。这是一个强化滤镜功能的方向。和单纯的加入新滤镜不同,实时滤镜把握住了所见即所得的精髓。
(2)GIF 动画
GIFshop 是 一款快速制作定格动画的应用。它结合了动态画面的叙事能力,保留了图片的小体积特点。但 GIFshop 的问题也非常突出,比起记录生活,它更适合于创作一些幽默的动态小品。一旦涉及到 “创作” ,用户的门槛就被无情地提高了。但让画面动起来的想法要比单纯的强化滤镜要走的更远一些。
(3)动态图片
Cinemagram 制 作出来的图片可以只在某一特定区域中出现动态效果。你可以那它创建那种网上流行的“会动的海报”。比起 GIFshop ,它能够让普通的记事照片变得有点魔幻。由于应用的构思巧妙,因此适合套用在不同的场合中。用户的门槛相对较小,但收获却是挺大的。我将其看作是 GIFshop 的改进版本。
(4)声音+图片
Picle 是 一款让你在拍摄相片的同时也记录下一段音频的应用。它的好处是让 “画外音” 这一有趣的角色参与照片的叙事。相比上述应用,Picle 进入了另个维度,它考虑到图片的叙事瓶颈,并试图通过加入音频来突破。Picle 所面临的问题是,它建立了一种新的格式,而这种格式目前还只能在 Picle 体系内分享。
后滤镜时代里各支团队在不同方向上设定了不同的瓶颈,并通过一定的方法来突破。思考的起点无一例外的定在了增强图片叙事能力之上。从目前的情况来看,有一些事项值得注意:
· 体积:不能因为增强了效果而变得臃肿。
· 题材:不能因为特别适合某种题材而狭隘了用户的使用场景。
· 格式:在现有流行的格式上入手,避免使用新格式。
· 门槛:在用户利益和使用复杂度上寻求平衡。
· 多媒体:在图片上做加法,但不能演变成拍摄视频。
相信随着硬件技术的增强,手机将成为一类新的照相设备。它也许替代不了传统的相机,但它却能因为应用而变得不可替代。而可以预见的是,滤镜不会是手机照相的最后一站。
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- Android事件传递源码分析
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- android防止连续点击的简单实现(kotlin)
- Android|Android install 多个设备时指定设备