正如你所說,核心圖像的當前功能是iOS上的一點點有限的。特別是,在桌面上找不到類似自定義內核的內容令人失望。您列出的其他替代方案(除了GLImageProcessing,無法進行此類過濾)都是CPU綁定的庫,對於在移動設備上進行實時篩選會太慢。
但是,我可以指出一個名爲GPUImage的開源框架,我只是推出了這個框架,因爲我找不到可以讓您取消自定義效果的東西。正如其名稱所示,GPUImage使用OpenGL ES 2.0着色器對靜止圖像和視頻進行GPU加速處理。您可以使用這些編寫自己的自定義效果,因此您應該可以做任何你能想到的事情。框架本身是Objective-C,並且有一個相當簡單的界面。
作爲失真濾波器,以下着色器(基於Danny Pflughoeft's answer代碼)的示例做了排序的魚眼效果:
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
const mediump float bulgeFactor = 0.5;
void main()
{
mediump vec2 processedTextureCoordinate = textureCoordinate - vec2(0.5);
mediump float radius = processedTextureCoordinate.x * processedTextureCoordinate.x + processedTextureCoordinate.y * processedTextureCoordinate.y;
mediump vec2 distortedCoordinate = vec2(pow(radius, bulgeFactor)) * processedTextureCoordinate + vec2(0.5);
gl_FragColor = texture2D(inputImageTexture, distortedCoordinate);
}
這產生這種效果上的視頻流:
以我的基準,比GPUImage核心圖片(70X比CPU更快的)更快的處理圖像4X速度比在iPhone 4核心圖片(6X快於CPU綁定處理)和視頻25X。即使在最糟糕的情況下,我也可以拋棄它,它與Core Image的處理速度相匹配。
這個框架還是相當新的,所以我現在在那裏的庫存過濾器數量很少,但我會盡快加入一堆。與此同時,您可以編寫自己的自定義失真着色器來處理圖像,並且可以根據需要調整所有內容的源代碼。 My introductory post about it有關如何在您的應用程序中使用它的更多細節。
我之前使用過ImageMagick,並且對於我們的OS X產品而言,它的構建「恰到好處」有點麻煩,但最終它是值得的。可惜我不再有這個makefile,所以我不能給你。 – 2012-02-16 22:00:58
如果你想使用其中一個庫,你將不得不花時間去學習它所寫的語言,也許我不明白你的問題。 – 2012-02-16 22:28:28
謝謝你的答案,只是不是我想聽到的:(愚蠢的蘋果沒有那些過濾器提供給開發者! – 2012-02-17 03:23:40