IOS按坐标逐点绘制灰度图片
2016-03-20 22:25
399 查看
从zxing的源代码里边挖出来的部分源码,根据自己的需要修改成这个样子……基于objectiv-C++,这么看彩色的应该差不多,有空再研究下
***************************************************************************************************
//首先生成图像矩阵,一维矩阵,长度=目标图像长*目标图像宽,数据类型可以是byte或者usignedchar
Byte* subsetData =
publicFunction::init1DArrayByte(sourceWidth*sourceHeight);
for(int x = 0; x
for (int y = 0 ; y < sourceHeight; y++) {
Color c = getColorAt(x, y);//我自己预设好的矩阵,这里可以自由发挥
if (c.R>127&&c.G>127&&c.B>127)
{
subsetData[x+y*sourceWidth] = 0;//表示修改第(x,y)处的点的灰度为0
}
else
{
subsetData[x+y*sourceWidth] = 255;
}
}
//循环每一个像素点,0表示灰度0,255表示灰度255
//**********************************
//以下开始将图像矩阵保存成UIImage
int subsetBytesPerRow = sourceWidth;//((sourceWidth + 0xf) >>
4) << 4;
CGColorSpaceRef grayColorSpace =
CGColorSpaceCreateDeviceGray();
CGContextRef
ctx =
CGBitmapContextCreate(subsetData, sourceWidth, sourceHeight,
8, subsetBytesPerRow, grayColorSpace,
kCGImageAlphaNone);
CGColorSpaceRelease(grayColorSpace);
CGContextSetInterpolationQuality(ctx, kCGInterpolationNone);
CGContextSetAllowsAntialiasing(ctx, false);
// adjust
the coordinate system
CGContextTranslateCTM(ctx, 0.0, sourceHeight);
CGContextScaleCTM(ctx, 1.0, -1.0);
UIGraphicsPushContext(ctx);
//CGRect
rect = CGRectMake(0,0,sourceWidth,sourceHeight);
//[image
drawInRect:rect];
UIGraphicsPopContext();
CGContextFlush(ctx);
CGImageRef subsetImageRef = CGBitmapContextCreateImage(ctx);
UIImage*
subsetImage =[UIImage imageWithCGImage:subsetImageRef];
CGImageRelease(subsetImageRef);
CGContextRelease(ctx);
return
subsetImage;
***************************************************************************************************
//首先生成图像矩阵,一维矩阵,长度=目标图像长*目标图像宽,数据类型可以是byte或者usignedchar
Byte* subsetData =
publicFunction::init1DArrayByte(sourceWidth*sourceHeight);
for(int x = 0; x
for (int y = 0 ; y < sourceHeight; y++) {
Color c = getColorAt(x, y);//我自己预设好的矩阵,这里可以自由发挥
if (c.R>127&&c.G>127&&c.B>127)
{
subsetData[x+y*sourceWidth] = 0;//表示修改第(x,y)处的点的灰度为0
}
else
{
subsetData[x+y*sourceWidth] = 255;
}
}
//循环每一个像素点,0表示灰度0,255表示灰度255
//**********************************
//以下开始将图像矩阵保存成UIImage
int subsetBytesPerRow = sourceWidth;//((sourceWidth + 0xf) >>
4) << 4;
CGColorSpaceRef grayColorSpace =
CGColorSpaceCreateDeviceGray();
CGContextRef
ctx =
CGBitmapContextCreate(subsetData, sourceWidth, sourceHeight,
8, subsetBytesPerRow, grayColorSpace,
kCGImageAlphaNone);
CGColorSpaceRelease(grayColorSpace);
CGContextSetInterpolationQuality(ctx, kCGInterpolationNone);
CGContextSetAllowsAntialiasing(ctx, false);
// adjust
the coordinate system
CGContextTranslateCTM(ctx, 0.0, sourceHeight);
CGContextScaleCTM(ctx, 1.0, -1.0);
UIGraphicsPushContext(ctx);
//CGRect
rect = CGRectMake(0,0,sourceWidth,sourceHeight);
//[image
drawInRect:rect];
UIGraphicsPopContext();
CGContextFlush(ctx);
CGImageRef subsetImageRef = CGBitmapContextCreateImage(ctx);
UIImage*
subsetImage =[UIImage imageWithCGImage:subsetImageRef];
CGImageRelease(subsetImageRef);
CGContextRelease(ctx);
return
subsetImage;
相关文章推荐
- IOS取图片的某个位置的像素(ARGB…
- IOS开发技术问题总结(六)
- IOS开发技术问题总结(五)
- IOS开发技术问题总结(四)
- IOS开发技术问题总结(三)
- IOS开发技术问题总结(二)
- IOS开发技术问题总结(一)
- 远程推送(支持iOS 9)
- iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
- ios cordova如何加载远程界面?
- 深入解析iOS应用开发中对设计模式中的桥接模式的使用
- iOS ARC下的cycle retain
- iOS App开发中使cell高度自适应的黑魔法详解
- Mac&iOS Socket编程
- iOS开发------实现图片下载缓存到本地
- Xcode免证书打包ipa
- iOS-NSLayoutConstraint(代码约束)
- ios后台搭建 和那些坑
- IOS屏幕适配自动布局教程(一)
- iOS的socket开发基础