文档章节

扫描图片像素

古乙丁三雨
 古乙丁三雨
发布于 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
php获取图片RGB颜色值的例子

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

mysoftsky
2014/07/29
0
0
图片局部放大选中部分错位解决办法

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

馨缘6009
2014/05/15
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

没有更多内容

加载失败,请刷新页面

加载更多

中高级面试知识点:缓存

前言 几乎所有的项目都做了缓存,但是缓存做的怎么样,其实只有我们自己知道。缓存做的好,没有网络也能流畅的使用;再多的数据请求都不会出现卡顿延迟等待很久的情况。 程序中除了图片缓存(...

Mr_zebra
8分钟前
0
0
Poco官方PPT_190-Applications双语对照翻译

因工作需要用到这一块的功能,所以直接翻译了一下 此PPT来源于官方文件,地址https://pocoproject.org/documentation.html

CHONGCHEN
11分钟前
0
1
使用idea开发servlet,引用maven后触发的class not found的问题的解决方案

需要将maven下载的依赖加入到lib目录,具体操作方法如下:打开Projrct Settings->Artifacts->右边的Output Layout,双击maven的依赖,就可以加载上去...

shatian
13分钟前
0
0
SpringMVC 拦截器

拦截器 是指通过统一拦截从浏览器发往服务器的请求来完成功能的增强 SpringMVC拦截器实现过程 1.编写拦截器,实现 org.springframework.web.servlet.HandlerInterceptor 接口 2.将拦截器注册...

晨猫
16分钟前
0
0
RabbitMQ+PHP演示实例

新建rabbit_consumer.php作为消费者 <?php //配置信息 $conn_args = array( 'host' => '127.0.0.1', 'port' => '5672', 'login' => 'admin', 'password' => ......

hansonwong
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部