仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5487|回复: 20
打印 上一主题 下一主题

[学习教程] IOS制作之Android含混图象教程(4)仓酷云

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:32:26 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
很简单OBJCAVFoundation---播放视频相关的库最近正在学习这些算是学iOS开发的一些方法在本系列的后面部分,我们已看过利用RenderScript来含混一张图片,并经由过程一本性能剖析技能办理了此历程的瓶颈。我们发明利用RenderScipt时,实践的含混操纵得十分快。但仍是没法制止Java内存空间与RenderScript内存空间之间位图编码(Marshalling)带来的开支。在这篇文章里,我们将欠亨过内存空间编码来完成含混的功效,看看是不是能够失掉更好的效果。
起首必需供认,关于各类含混算法的Java完成,我并没有做过具体的测试。以是很有大概一些别的算法比我选择的更无效率。我选择的算法来自StackOverflow上YahelBouaziz的回覆,他很分明地相干的模子,而且宣称此算法出格疾速。有批评说这个算法比别的的办法快很多。
我不会在这里反复这个办法,详细的完成能够参考这个资本
里了。我也不会对分歧的含混算法举行申明,注释Yahel的代码是怎样事情的,大概与别的完成举行对照。这些不是完成含混系列文章的重点。假如想懂得更多的信息,这里有一个很好的JavaimageProcessing指南,它利用AWTlibraries完成。固然不要间接在Android上利用,但倒是进修分歧含混算法一个不错的出发点。
我们利用一种分歧的办法来对Yahel的办法举行封装,包含一个TimingLogger。如许能够便利地评价完成效果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
privatevoidblurJava(Bitmapbkg,Viewview,intradius){
TimingLoggertl=newTimingLogger(TAG,"blur");
Bitmapoverlay=Bitmap.createBitmap(
view.getMeasuredWidth(),
view.getMeasuredHeight(),
Bitmap.Config.ARGB_8888);
tl.addSplit("Bitmap.createBitmap()");
Canvascanvas=newCanvas(overlay);
tl.addSplit("newCanvas()");
canvas.drawBitmap(bkg,-view.getLeft(),
-view.getTop(),null);
tl.addSplit("canvas.drawBitmap()");
Bitmapblurred=fastblur(overlay,radius);
tl.addSplit("fastblur()");
view.setBackground(newBitmapDrawable(
getResources(),blurred));
tl.addSplit("view.setBackground()");
tl.dumpToLog();
}

运转后可以失掉以下效果:

<br>
必需批准Yehel的说法,效果看起来很多多少了。一切关头的运转效果体现怎样呢?
1
2
3
4
5
6
7
blur:begin
blur:0ms,Bitmap.createBitmap()
blur:0ms,newCanvas()
blur:1ms,canvas.drawBitmap()
blur:125ms,fastblur()
blur:0ms,view.setBackground()
blur:end,126ms


很少去思考,没有去多问几个为什么。这是学习的大忌,我认识到了自己学习方法上的错误。孔子说,学而不思则罔,思而不学则殆。一点也没错,学和思是要结合的,这样才能进步。现在回想一下,我学到了什么?自己也无言以对了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 23:13

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表