android平台的图片滤镜

http://www.icodelogic.com/?p=575 这里提供了几种滤镜的实现.我也下载了代码试了效果,如果图片较小,还是可以接受的,如果图片较大,有些处理过程会失败,内存不足,作者主要是将一些处理用jni实现,并不像其它的库用c来处理的,当然可能种种原因了. 

还有一些java处理的,好像是老外写的:http://www.jhlabs.com/ip/filters/index.html, 
还有http://www.cnblogs.com/daizhj/archive/2012/05/15/2501406.html也是纯java实现的. 

不管如何,对于移动设备的java,内存稍不注意就会出现不够用的情况,况且,如果是一个图片应用,本身其它列表已经加载了不少的内存,再处理一张图片的话,就很容易崩溃了. 

常见一些软件的图片滤镜处理能力还是不错的,如腾讯微博的,我就试过,一张图片i9000拍照的最高精度,缩放1/2再加载,然后用腾讯的库处理滤镜的效果,内存大约是占用了9m,速度相当快.谁叫人家有钱,请的都是高手. 

说了这么多,其实主要目的在于说明.滤镜的处理虽然用c,但java通过jni与c连接,还是可以反编译出来的. 

在这里是技术交流,我也不会把腾讯的库反编译了然后再弄一个java调用的例子放上来,这是不合法地. 

从jni调用来看,它的流程大约是这样的: 
先实例化一个jni连接的类,里面有5个方法.分别是初始化设置图片数据,释放内存,处理滤镜,获取高,获取宽. 

外部的调用过程:先设置图片数据,初始化滤镜的种类,这个种类是从资源文件里读取的,大约10种,然后在gallery中选中某种效果后找到对应种类的索引值,氢把这个索引值与之前的bitmap的byte[]数组一起传入,之后就可以得到一个rgb数组了,然后用这个rgv数组进行构造bitmap. 
这些调用jni是在一个iamge360jni类中,然后记得在处理完成后得到了想要的图片,需要进行资源释放 .调用recycle,名字混淆了自己找吧. 

如果有兴趣的,可以把它的程序拿出来看看,过程还是蛮容易的.在graphic包中包含了一个e类,包含这些调用.jni类比较单独,容易找的 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值