文档章节

扫描图片像素

古乙丁三雨
 古乙丁三雨
发布于 2015/02/26 18:52
字数 170
阅读 21
收藏 0
    NSUInteger width = img.size.width;
    NSUInteger height = img.size.height;
    NSUInteger bytesPerPixel = 4;
    NSUInteger bytesPerRow = width * bytesPerPixel;
//    NSUInteger bytesPerColumn = height * bytesPerPixel;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef bmContext = CGBitmapContextCreate(NULL, width, height, 8, bytesPerRow,     colorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst);
    CGColorSpaceRelease(colorSpace);
    CGContextDrawImage(bmContext, (CGRect){.origin.x = 0.0f, .origin.y = 0.0f, .size.width = width, .size.height = height}, img.CGImage);
    UInt8* data = (UInt8*)CGBitmapContextGetData(bmContext);
    const size_t bitmapByteCount = bytesPerRow * height;
    
    struct Color {
        UInt8 r;
        UInt8 g;
        UInt8 b;
    };
    for (size_t i = 0; i < bytesPerRow; i += 4) //shift 1 pixel
    {
        for (size_t j = 0; j < bitmapByteCount; j += bytesPerRow) //check every pixel in column
        {
            struct Color thisColor = {data[j + i + 1], data[j + i + 2], data[j + i + 3]};
            if (thisColor.r != 0)
            {
                NSString *areaPoint = NSStringFromCGPoint(CGPointMake(i/4, j/(width * bytesPerPixel)));
                [arrayPoint addObject:areaPoint];

//           NSLog(@"%zu %zu",i/4,j/(width * bytesPerPixel)); // point of area
            }
        }
    }
    CGContextRelease(bmContext);


© 著作权归作者所有

共有 人打赏支持
古乙丁三雨
粉丝 1
博文 55
码字总数 29925
作品 0
景德镇
程序员
[Android实例] 深入学习Bitmap-android的图片扫描

我这个实例是将一个位图用几秒钟扫描,然后得到它的反色图。做这个实例主要是想研究下Bitmap类和Color类,重点是getPixe和setPix的这两个方法的用法。 Java代码 1 publicclassSkanBitmapext...

android技术开发
2013/07/25
0
0
图片局部放大选中部分错位解决办法

情景如下: 在窗体上添加一个Picturebox用来加载图片,当鼠标在Picturebox移动时圈定一个矩形区域,并将矩形区域放大显示在Panel控件上。 问题: 已PictureBox作为坐标参考系,动态获得跟随鼠...

馨缘6009
2014/05/15
0
0
php获取图片RGB颜色值的例子

php获取图片RGB颜色值的例子 很多图片站点都会根据用户上传的图片检索出图片的主要颜色值,然后在通过颜色搜索相关的图片。 之前按照网上的方法将图片缩放(或者马赛克)然后遍历每个像素点,然...

mysoftsky
2014/07/29
0
0
opencv 2 computer vision application programming第二章翻译

第二章 操作像素 在本章,我们会讲述: 处理像素值 用指针扫描图像 用迭代器扫描图像 写高效的图像扫描循环 用相邻的方法扫描图像 展示简单的图像计算 定义感兴趣的区域 【概述】 为了建立计...

lovedan
2013/04/30
0
0
使用DeepLearning4j训练和保存模型

一、前言 最近一直在研究深度学习,联想起之前所学,感叹数学是一门朴素而神奇的科学。F=Gm1m2/r²万有引力描述了宇宙星河运转的规律,E=mc²描述了恒星发光的奥秘,V=H*d哈勃定律描述了宇宙...

孟飞阳
06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java异常处理最佳实践

总结一些Java异常的处理原则 Java异常处理最佳实践 不要忘记关闭资源 在finally里关闭资源 public void readFile() { FileInputStream fileInputStream = null; File file = new Fil...

yysue
30分钟前
0
0
00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
4
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
122
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部