[C#]快速读写Bitmap像素

C# 图像类Bitmap C# 图像类Bitmap   C#中处理图像的类是Bitmap,这个类里边各种图像的信息存在类的头结构体里边,而图像的像素数据则存在一块连续的区域内,指向该区域的指针是Scano,比如一个图像的定义是: Bitmap disp=xxxxx 此时获得数据像素区块的首地址这样获得: BitmapData bmp = disp.LockBits(new Rectangle(0,0, im 阅读详情

原文作者:conmajia
原文链接:http://topic.youkuaiyun.com/u/20120710/12/A6326F1D-D329-4268-9A04-76CFED772612.html

使用Bitmap类时经常会用到GetPixel和SetPixel,但是这两个方法直接使用都比较慢,所以一般都会使用LockBits/UnlockBits将位图在内存中锁定,以加快操作速度。

private void LockUnlockBitsExample(PaintEventArgs e)
        {

            // Create a new bitmap.创建位图
            Bitmap bmp = new Bitmap("c:\\fakePhoto.jpg");

            // Lock the bitmap's bits.  锁定位图
            Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
            System.Drawing.Imaging.BitmapData bmpData =
                bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
                bmp.PixelFormat);

            // Get the address of the first line.获取首行地址
            IntPtr ptr = bmpData.Scan0;

            // Declare an array to hold the bytes of the bitmap.定义数组保存位图
            int bytes  = Math.Abs(bmpData.Stride) * bmp.Height;
            byte[] rgbValues = new byte[bytes];

            // Copy the RGB values into the array.复制RGB值到数组
            System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);

            // Set every third value to 255. A 24bpp bitmap will look red.  把每像素第3个值设为255.24bpp的位图将变红
            for (int counter = 2; counter < rgbValues.Length; counter += 3)
                rgbValues[counter] = 255;

            // Copy the RGB values back to the bitmap 把RGB值拷回位图
            System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes);

            // Unlock the bits.解锁
            bmp.UnlockBits(bmpData);

            // Draw the modified image.绘制更新了的位图
            e.Graphics.DrawImage(bmp, 0, 150);
        }


C# 实现海康相机SDK的高效图像采集与处理 本文详细介绍了如何使用C#调用海康相机SDK进行高效的图像采集与处理。内容涵盖从开发环境搭建、设备查找与连接,到核心的图像采集流实现、图像保存以及关键参数(如曝光、增益)的调节。文章重点分享了主动取流、内存管理、线程安全等实战技巧与常见坑点排查,旨在帮助开发者快速构建稳定可靠的工业视觉应用。 阅读详情

相关推荐

C#+VisionPro图像处理实战:如何用CogImage8Grey和Bitmap实现工业级图片读写(附完整代码)

本文详细解析了C#与VisionPro在工业图像处理中的高效结合,重点介绍了CogImage8Grey和Bitmap的互操作技巧与性能优化策略。通过实战代码演示了工业级图片读写的最佳实践,包括内存管理、格式转换和高速存储方案,帮助开发者提升工业视觉系统的处理效率和稳定性。

weixin_30374009的博客 444

C#中的bitmap类和图像像素值获取方法

一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色. 2. PixelFormat属性:返回图像的像素格式. 3. Palette属性:获取和设置图像所使用的颜色调色板. 4. Height Width属性:返回图像的高度和宽度. 5.LockBits方法和UnlockBits.

最数据的专栏 9997

深度揭秘:C# AI视觉缺陷检测的特征提取与模型推理底层机制

C#做AI视觉缺陷检测,从来不是“调个ONNX库就行”这么简单。调用API只是最表层的工作,真正决定落地效果的,是对整个计算链路的理解:知道每一步底层在做什么、为什么这么做、错了会怎么样。工业场景不比学术实验,精度差一点、速度慢一点、稳定性弱一点,都可能导致整个方案无法落地。理解了特征提取和模型推理的底层机制,你才能精准调优、快速排坑,把AI能力稳定地输出到产线上。技术的深度,从来不是会用多少个框架,而是看透多少层本质。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 360

【C#】加快Bitmap的访问速度

摘自:http://www.codeproject.com/Tips/240428/Work-with-bitmap-faster-with-Csharp#_rating 在对Bitmap图片操作的时候,有时需要用到获取或设置像素颜色方法:GetPixel 和 SetPixel, 如果直接对这两个方法进行操作的话速度很慢,这里我们可以通过把数据提取出来操作,然后操作完在复制回去可以加快访问速度...

weixin_33802505的博客 485

bitmap实例

bitmap实例小程序,利用bitmap类,实现图像的读取,并且尝试一阶微分处理

使用CAPL实现DoIP刷写

本文介绍了使用CAPL实现基于DoIP协议的ECU刷写方法,包含完整源码。

qq_56033302的博客 2758

提高c#位图操作的速度[抄袭之作]

众所周知,c#里 bitmap类里的getpixel和setpixel函数的效率很慢,一个解决办法是使用bitmapData对位图进行指针操作, 而在用指针在进行读取的时候,对于不用格式(PixelFormat)的位图,要进行区分。十分的麻烦。前几天无意中在codeproject上看到一篇文章, 对于bitmapData的进行了封装,相当的漂亮,所以就抄了过来,仅供参考,原文在这里。 代码如...

weixin_30687051的博客 331

基于电子海图的水面无人艇全局路径规划

Research and Implementation of Global Path Planning for Unmanned Surface Vehicle Based on Electronic Chart (基于电子海图的水面无人艇全局路径规划)   该论文已经在ICMIR2017会议上发表,附上springer的文献地址 Research and Implementation of Gl...

weixin_30797199的博客 1590

【C#】从指定路径读取图片源、Bitmap与ImageSource互转、Bitmap与BitmapImage互转、BitmapImage转为byte[]、图片压缩

【C#】从指定路径读取图片源、Bitmap与ImageSource互转、Bitmap与BitmapImage互转、BitmapImage转为byte[]、图片压缩

wangnaisheng的专栏 3737

信号与系统——卷积、相关运算与FFT关系以及工程应用(三)

卷积运算、相关运算

qq_35028634的博客 6611

强化学习 之 Actor Critic

简介 Actor Critic是一种结合体算法: (1)Actor 的前生是 Policy Gradients,这能让它毫不费力地在连续动作中选取合适的动作,而 Q-learning 做这件事会瘫痪; (2)Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法,能进行单步更新,而传统的 Policy Gradients 则是回合更新,这降低了学习效率。 算法思想 Actor...

Test_tju的博客 809

C# Bitmap.SetPixel()效率提升:指针法优化方法

创建类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Lucene.Net.Support; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Runtime.InteropServices

Heisenberg's blog 1767

AVL-Excite新手必看:5步搞定发动机阀系系统建模(附B站视频教程)

本文为AVL-Excite新手提供发动机阀系系统建模的5步详细指南,涵盖软件环境搭建、基本结构建立、关键参数设置、仿真分析及常见问题排查。通过清晰的步骤说明和实用技巧,帮助工程师快速掌握建模方法,并附有精选B站视频教程链接,便于实践学习。

weixin_29305313的博客 503

C#利用lockbits方法快速对Bitmap进行读写

实例: 关于Bitmap处理的一个方法展示 使用SetPixel的方法 private void BitmapSetGradient(ref Bitmap bitmap) { int nx, ny; double r, g, b; nx = bitmap.Width; ny = bitm...

122&&113的博客 4393

Python爬虫教程:微博热点话题抓取与社交媒体分析

微博是中国最大的社交媒体平台之一,拥有海量的用户和丰富的讨论话题。通过爬取微博的热门话题和讨论内容,我们可以深入分析用户的兴趣、舆论走势、社会情绪等。通过爬取微博的热点话题和讨论内容,我们可以获得关于当前热门话题的宝贵数据,并基于这些数据进行多种社交媒体分析。本文将通过Python爬虫技术,详细介绍如何抓取微博上的热门话题、话题讨论内容,并进行社交媒体分析。希望本文为你提供了一个全面的微博数据抓取与分析的指南,帮助你在社交媒体数据分析的道路上迈出坚实的第一步。微博上的一些页面内容是静态的,可以直接通过。

2201_76125261的博客 589

labelImg使用教程

Anaconda环境 安装 Anaconda 之后,在开始菜单下找到 Anaconda 文件夹 找到 Anaconda Prompt 点击运行 安装 labelImg pip install labelImg #直接命令行输入 启动 labelImg labelImg #直接命令行输入名称即可 labelImg界面 开始标注 快捷键:W(创建方框),A(上一张),D(下一张) XML文件示例 <annotation> <folder>夜读</folder>

G果的博客 3万+

C# 进行图像处理的几种方法(Bitmap,BitmapData,IntPtr)

C# 进行图像处理的几种方法(Bitmap,BitmapData,IntPtr)

wangnaisheng的专栏 1万+

什么是 AIDV(AI 定义汽车):从软件定义到智能决策的范式革命

AI定义汽车(AIDV),是指以人工智能(尤其是大模型、深度学习、强化学习)为核心引擎,以车载AI芯片为算力底座,以“数据闭环”为迭代支撑,重构汽车感知、决策、执行全链路,实现“感知智能化、决策自主化、体验个性化、迭代自动化”的新一代智能汽车发展范式。其核心是让汽车从“执行工具”升级为“具备自主学习与智能决策能力的移动智能终端”,核心价值是“车与人的深度协同”与“复杂场景的自主适配”。

getusushu的博客 96

量化GDI+:快速Bitmap读写像素

写在前面的话: 本文针对GDI+下Bitmap操作(Get/SetPixel)进行测试,而非寻求最快速的位图处理方式。如果你需要速度上的提升,请使用GDI+以外的技术,如并行计算、调用MMX/SSE指令、CUDA等。 这是一个古老的技巧: 使用Bitmap类时经常会用到GetPixel和SetPixel,但是这两个方法直接使用都比较慢,所以一般都会使用LockBits/UnlockBit

My name is Conmajia 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C#中Bitmap类的快速访问

以下类封装了用于快速读写Bitmap的方法,主要用了Lockbits方法。 public class LockBitmap { Bitmap source = null; IntPtr Iptr = IntPtr.Zero; BitmapData bitmapData = null; public byte[] Pixels { get; set; } publ

Neroie的博客 769

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

c#实现RGB字节数组生成图片

我是要用c#来实现,现在已经知道了rgb数组,那么如何快速生成一张图片呢? 其实这个话题并不局限于是rgb字节数组的顺序,只要你能对于上表示红、绿、蓝的值,就可以生成图片。知道了原理,做什么都简单了。 rgb分别只是代表一个颜色的值,如果你真是rgb,那你就是要按位置用setpiex一个个画颜色。如下: Bitmap bmp = new Bitmap(w,h); for(int x =...

weixin_30369087的博客 1787

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

浅析C#Image类

初学C#,为了使

u011974126的专栏 1万+

Bitmap的优化

摘自:http://www.codeproject.com/Tips/240428/Work-with-bitmap-faster-with-Csharp#_rating 作者:Vano Maisuradze   当你在C#中操作bitmaps时,你可以使用 GetPixel(x ,y) 和 SetPixel(x, y, color) 去获取/设置特定像素的值。但是它们十分的慢。  ...

weixin_30692143的博客 104

C#中使用lockbits方法处理图像(译文)

    许多图像处理任务即时是最简单的文件类型转换,例如从32位深度到8位深度的格式转化,直接获得像素阵列要比使用GetPixel和SetPixel等方法的效率高得多。    你可能会发现DotNet采用托管机制,大多数情况下微软会推荐你使用托管代码,理由是便捷和安全。实际应用中,直接操作内存中的数据块是很少见的,尽管如此,图像处理恰恰是这类为数不多的情况之一,因为使用托管代码的效率低的难以忍

站在巨人的肩膀上 2165

GDI+入门(C#高速处理版本)

首先感谢优快云的朋友laviewpbt为我给我的建议。 laviewpbt提出使用getpixel处理速度太慢,上不了档次。 这里我再给大家写两种处理速度更快的图形处理方式。 下面是个内存操作灰度的程序: bmp = new Bitmap(Application.StartupPath + "//1.jpg");            Bitmap bmp2 = (B

1045
上一篇: 变色龙引导启动看不到Mac分区盘符的解决办法
下一篇: jQuery获取单选按钮(Radio)当前选中项的值
coderwu
博客等级 码龄24年 43粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值