UIImage 读取修改像素颜色
来源:互联网 发布:公共网络摄像头 编辑:程序博客网 时间:2024/05/22 03:15
- (UIImage*) imageBlackToTransparent:(UIImage*) image
{
// 分配内存
const int imageWidth = image.size.width;
const int imageHeight = image.size.height;
size_t bytesPerRow = imageWidth * 4;
uint32_t* rgbImageBuf = (uint32_t*)malloc(bytesPerRow * imageHeight);
// 创建context
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(rgbImageBuf, imageWidth, imageHeight, 8, bytesPerRow, colorSpace,kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);
CGContextDrawImage(context, CGRectMake(0, 0, imageWidth, imageHeight), image.CGImage);
// 遍历像素
int pixelNum = imageWidth * imageHeight;
uint32_t* pCurPtr = rgbImageBuf;
for (int i = 0; i < pixelNum; i++, pCurPtr++)
{
uint8_t *ptr = (uint8_t*)pCurPtr;
if (ptr[1] == 255 && ptr[2] == 255 && ptr[3] == 255)
{
ptr[0] = 0;
ptr[1] = 0;
ptr[2] = 0;
ptr[3] = 0;
}
}
// 将内存转成image
CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, rgbImageBuf, bytesPerRow * imageHeight,ProviderReleaseData);
CGImageRef imageRef = CGImageCreate(imageWidth, imageHeight, 8, 32, bytesPerRow, colorSpace,kCGImageAlphaLast | kCGBitmapByteOrder32Little, dataProvider,NULL, true, kCGRenderingIntentDefault);
CGDataProviderRelease(dataProvider);
UIImage* resultUIImage = [UIImage imageWithCGImage:imageRef];
// 释放
CGImageRelease(imageRef);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
// free(rgbImageBuf) 创建dataProvider时已提供释放函数,这里不用free
return resultUIImage;
}
void ProviderReleaseData (void *info, const void *data, size_t size)
{
free((void*)data);
}
- UIImage 读取修改像素颜色
- UIImage修改图片颜色
- 修改Bitmap像素颜色
- Mat类型读取像素,修改像素方法
- 修改NavigationBar一像素线颜色
- 获取UIImage像素数据
- Android 修改Bitmap图片像素的信息 RGB颜色值
- 更改UIImage颜色
- UIImage渲染颜色
- 背景颜色转为UIImage
- UIimage更改TintColor颜色
- UIImage 颜色渲染imageWithRenderingMode
- OpenCv,对像素读取,修改,保存等操作
- Java读取并修改图片的像素值
- Excel字体颜色的读取、修改
- UIImage图片处理(更改颜色,修改透明度,缩小,合并图片)
- UIImage图片处理(更改颜色,修改透明度,缩小,合并图片)
- 修改UIImage的大小
- 关于sqlite3数据库文件格式的分析
- 内存管理机制 Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)错误
- Ceph实战入门系列(三)——块设备-OpenStack
- Android学习28
- 尚硅谷学习笔记----声明式验证
- UIImage 读取修改像素颜色
- MAD
- 栈的应用-四则运算表达式求值
- 000
- 常量与变量、静态变量与实例变量
- ZCMU—1720
- 重温Spring之旅1——控制反转IOC与依赖注入DI
- 迷宫问题
- 优化SQL查询:如何写出高性能SQL语句