一、基于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 |
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 体系内分享。
后滤镜时代里各支团队在不同方向上设定了不同的瓶颈,并通过一定的方法来突破。思考的起点无一例外的定在了增强图片叙事能力之上。从目前的情况来看,有一些事项值得注意:
· 体积:不能因为增强了效果而变得臃肿。
· 题材:不能因为特别适合某种题材而狭隘了用户的使用场景。
· 格式:在现有流行的格式上入手,避免使用新格式。
· 门槛:在用户利益和使用复杂度上寻求平衡。
· 多媒体:在图片上做加法,但不能演变成拍摄视频。
相信随着硬件技术的增强,手机将成为一类新的照相设备。它也许替代不了传统的相机,但它却能因为应用而变得不可替代。而可以预见的是,滤镜不会是手机照相的最后一站。