iOS 几个图片图像处理
来源:互联网 发布:淘宝怎么删除评价 编辑:程序博客网 时间:2024/05/21 21:47
1、黑白化
if (红色>120 || 绿色>120 ||蓝>120 ){
变成黑色
}
else{
变成白色
}
- (UIImage *)whiteBlackImage{ CGImageRef imImage = self.CGImage; CFDataRef mDataRef = CGDataProviderCopyData(CGImageGetDataProvider(imImage)); UInt8 *mPixelBuf = (UInt8 *)CFDataGetBytePtr(mDataRef); CFIndex length = CFDataGetLength(mDataRef); for(int i=0;i<length;i+=4){ int r = i; int g = i+1; int b = i+2; int red1 = mPixelBuf[r]; int green1 = mPixelBuf[g]; int blue1 = mPixelBuf[b]; if (red1 < 120 || green1 < 120 || blue1 < 120) { mPixelBuf[r] = 0; mPixelBuf[g] = 0; mPixelBuf[b] = 0; } else{ mPixelBuf[r] = 255; mPixelBuf[g] = 255; mPixelBuf[b] = 255; } } CGContextRef ctx = CGBitmapContextCreate(mPixelBuf, CGImageGetWidth(imImage), CGImageGetHeight(imImage), CGImageGetBitsPerComponent(imImage), CGImageGetBytesPerRow(imImage), CGImageGetColorSpace(imImage), CGImageGetBitmapInfo(imImage) ); CGImageRef imageRef = CGBitmapContextCreateImage(ctx); CGContextRelease(ctx); UIImage *finalImage = [UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); CFRelease(mDataRef); return finalImage;}
2、海报化
素像点颜色红绿蓝都乘以Oxe0
/** * 海报化 */- (UIImage *)CBMPImage{ CGImageRef imImage = self.CGImage; CFDataRef mDataRef = CGDataProviderCopyData(CGImageGetDataProvider(imImage)); UInt8 *mPixelBuf = (UInt8 *)CFDataGetBytePtr(mDataRef); CFIndex length = CFDataGetLength(mDataRef); for(int i=0;i<length;i+=4){ int r = i; int g = i+1; int b = i+2; int red1 = mPixelBuf[r]; int green1 = mPixelBuf[g]; int blue1 = mPixelBuf[b]; mPixelBuf[r] = red1&0xe0; mPixelBuf[g] = green1&0xe0; mPixelBuf[b] = blue1&0xe0; } CGContextRef ctx = CGBitmapContextCreate(mPixelBuf, CGImageGetWidth(imImage), CGImageGetHeight(imImage), CGImageGetBitsPerComponent(imImage), CGImageGetBytesPerRow(imImage), CGImageGetColorSpace(imImage), CGImageGetBitmapInfo(imImage) ); CGImageRef imageRef = CGBitmapContextCreateImage(ctx); CGContextRelease(ctx); UIImage *finalImage = [UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); CFRelease(mDataRef); return finalImage;}
三、高斯模糊
/** * 高斯模糊 */- (UIImage *)GaussianSmoothImage{ CGImageRef imImage = self.CGImage; CFDataRef mDataRef = CGDataProviderCopyData(CGImageGetDataProvider(imImage)); CFDataRef m_OutDataRef = CGDataProviderCopyData(CGImageGetDataProvider(imImage)); UInt8 *mPixelBuf = (UInt8 *)CFDataGetBytePtr(mDataRef); UInt8 *mOutPixelBuf = (UInt8 *) CFDataGetBytePtr(m_OutDataRef); //CFIndex length = CFDataGetLength(mDataRef); int width = (int)CGImageGetWidth(imImage); int height = (int)CGImageGetHeight(imImage); int templates[25] = { 1, 4, 7, 4, 1, 4, 16, 26, 16, 4, 7, 26, 41, 26, 7, 4, 16, 26, 16, 4, 1, 4, 7, 4, 1 }; int rSum,gSum,bSum; int index=0; for(int i= 2;i<height-2;i++){ for(int j= 2;j<width-2;j++){ rSum=0; gSum=0; bSum=0; index=0; for(int zi=i-2;zi<i+3;zi++){ for(int zj=j-2;zj<j+3;zj++){ int s = templates[index++]; int tindex = zi*height*4+zj*4; rSum += mPixelBuf[tindex]*s; gSum += mPixelBuf[tindex+1]*s; bSum += mPixelBuf[tindex+2]*s; } } rSum/=273; gSum/=273; bSum/=273; rSum = rSum>255?255:rSum; gSum = gSum>255?255:gSum; bSum = bSum>255?255:bSum; index = i*4*width+j*4; mOutPixelBuf[index]=rSum; mOutPixelBuf[index+1]=gSum; mOutPixelBuf[index+2]=bSum; } } CGContextRef ctx = CGBitmapContextCreate(mOutPixelBuf, CGImageGetWidth(imImage), CGImageGetHeight(imImage), CGImageGetBitsPerComponent(imImage), CGImageGetBytesPerRow(imImage), CGImageGetColorSpace(imImage), CGImageGetBitmapInfo(imImage) ); CGImageRef imageRef = CGBitmapContextCreateImage(ctx); CGContextRelease(ctx); UIImage *finalImage = [UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); CFRelease(mDataRef); return finalImage;}
0 0
- iOS 几个图片图像处理
- IOS 图片图像的处理
- 图像处理几个基本概念
- 几个图像处理函数
- iOS开发图像处理--绘制图片上下颠倒
- iOS开发图像处理--绘制图片上下颠倒 .
- iOS开发图像处理--绘制图片上下颠倒 .
- iOS开发图像处理--绘制图片上下颠倒
- iOS开发图像处理--绘制图片上下颠倒
- iOS开发图像处理--绘制图片上下颠倒
- iOS开发图像处理--绘制图片上下颠倒
- [绘画]iOS开发图像处理 - 绘制图片上下颠倒
- iOS开发图像处理--绘制图片上下颠倒
- 几个图像处理源代码网站
- 图像处理-图片读写
- 图像处理 - 打开图片
- ios图像处理片段
- iOS 图像处理
- 中缀表达式转前缀表达式
- mysql添加新用户 开放外网访问
- ubuntu 14.04安装libpcap
- CSS基础01
- C++内存管理
- iOS 几个图片图像处理
- 实例变量与局部变量的区别
- 网址收藏
- 残缺的棋盘
- Android数据存储
- BZOJ 2178 圆的面积并
- Java中的Socket通信(TCP)
- 【UOJ 246】【UER #7】套路
- 剑指offer-调整数组顺序使奇数位于偶数前面