iOS 高性能圖片模糊

2014-08-30 18:00:20 +08:00
 Elethom
http://blog.projectrhinestone.org/high-performance-ios-box-blur-with-accelerate-framework/

先將圖片尺寸減半, 然後使用 Accelerate.framework 做三次卷積運算. 模糊半徑的算法來自 WWDC sample code.
4863 次点击
所在节点    iDev
16 条回复
gonghao
2014-08-30 18:22:39 +08:00
GPUImage 其实也是一个比较好的选择
txx
2014-08-30 18:27:32 +08:00
@gonghao 性能差距明显
satanwoo
2014-08-30 21:51:38 +08:00
卷积的核函数是用的哪个啊?
keithellis
2014-08-30 21:58:48 +08:00
satanwoo
2014-08-30 22:00:28 +08:00
不懂但是觉得
size_t width = CGImageGetWidth(inImageRef) * .5f;
size_t height = CGImageGetHeight(inImageRef) * .5f;
size_t rowBytes = CGImageGetBytesPerRow(inImageRef) * .5f;

这样真的是先尺寸减半吗?
hoogle
2014-08-30 23:19:21 +08:00
各种方法都试过, 好像还是没法弄到跟 Twitter 个人页面下拉时候那样流畅的 blur 效果。 哎哎。。
Elethom
2014-08-30 23:42:20 +08:00
@satanwoo
減半在 CGContextDrawImage().
gonghao
2014-08-30 23:42:56 +08:00
@txx 不要放在 main 里面做,性能问题真不是特别明显,GPUImage 性能真心很不错了
Elethom
2014-08-30 23:43:11 +08:00
@hoogle
我也想知道 Twitter 是怎樣實現的...
satanwoo
2014-08-30 23:57:29 +08:00
@Elethom

谢谢,不太懂这块。
感觉是好像同时降低了图片的bit数。
txx
2014-08-31 02:04:45 +08:00
@gonghao http://code.tutsplus.com/tutorials/adding-blur-effects-on-ios--cms-21488

看5c...如果你真覺得這個叫做性能不錯...
wezzard
2014-08-31 08:33:39 +08:00
感覺 GPUImage 在 CoreImage 可以自己寫 Filters 之後可以退休了......
so898
2014-09-01 01:54:47 +08:00
@hoogle @Elethom
https://github.com/so898/TwitterBlur

耍了点小聪明,个人觉得最终效果还不错的样子
那个高度实在是不乐意算了……
hoogle
2014-09-01 11:51:08 +08:00
@so898 赞。 但细看还是有点差别, 可能 Twitter 用了更多图或者什么原因。。
gonghao
2014-09-01 14:25:58 +08:00
@txx 5 & 5c 确实性能会差不少,但是也有优化手段,你给那篇文章里面使用 GPUImage 的方式是最基本的方式(直接通过 UIImage 输出),但是可以用 GPUImageView 来优化一些~当然怎么着都希望能有原生的方式来做,所以更期待 iOS 8 的 Blur Effects。p.s. 用 GPUImage 的另一个原因是模糊选择比这种方式多,效果可控性上也更强
perrywky
2014-09-01 18:18:24 +08:00
我的做法是准备好一张模糊效果的图片,盖在原图上面,初始状态完全透明,下拉的时候,降低这张图片的透明度,效果也还不错。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/130815

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX