首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

iOS中的图像处理(3)——混合运算

2012-09-14 
iOS中的图像处理(三)——混合运算有时候,单独对一张图像进行处理是很难或者根本达不到我们想要的效果的。一个

iOS中的图像处理(三)——混合运算

有时候,单独对一张图像进行处理是很难或者根本达不到我们想要的效果的。一个好的滤镜效果的诞生,往往要经过很多复杂步骤、细致微调、图片应用效果观察以及很多图层叠加。

我在JSWidget上发现了一些常用混合算法,对应着一些常用混合模式,通过这些blend modes,我们可以指定两张图像如何混合。

不过在此之前,我们需要纯颜色图像和渐变图像来做辅助:

 iOS中的图像处理(3)——混合运算 

iOS中的图像处理(3)——混合运算 iOS中的图像处理(3)——混合运算

其中,overlay算法如下:

double calcOverlay(float b, float t) {return (b > 128.0f) ? 255.0f - 2.0f * (255.0f - t) * (255.0f - b) / 255.0f: (b * t * 2.0f) / 255.0f;}void filterOverlay(UInt8 *pixelBuf, UInt8 *pixedBlendBuf, UInt32 offset, void *context){int r = offset;int g = offset+1;int b = offset+2;int red = pixelBuf[r];int green = pixelBuf[g];int blue = pixelBuf[b];int blendRed = pixedBlendBuf[r];int blendGreen = pixedBlendBuf[g];int blendBlue = pixedBlendBuf[b];        pixelBuf[r] = SAFECOLOR(calcOverlay(red, blendRed));pixelBuf[g] = SAFECOLOR(calcOverlay(green, blendGreen));pixelBuf[b] = SAFECOLOR(calcOverlay(blue, blendBlue));}



热点排行