`
mmdev
  • 浏览: 13243242 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

同样指令bmp.LockBits不同平台(Windows/WinCE)获取位图的数据不同

 
阅读更多

最近做了一个获取位图(24位位图)数据的程序,代码如下:

Bitmapbmp=newBitmap(BmpFile);
//获取位图的数据
System.Drawing.Imaging.BitmapDatabmpData=bmp.LockBits(newRectangle(0,0,bmp.Width,bmp.Height),System.Drawing.Imaging.ImageLockMode.ReadWrite,System.Drawing.Imaging.PixelFormat.Format24bppRgb);

//获得位图数据的初始地址
IntPtrptr=bmpData.Scan0;

//位图数据
intbytes=bmp.Width*bmp.Height*3;
byte[]bytData=newbyte[bytes];

//拷贝位图数据到字节数组
System.Runtime.InteropServices.Marshal.Copy(ptr,bytData,0,bytes);

//数据处理
//......

//拷贝字节数组数据到位图
System.Runtime.InteropServices.Marshal.Copy(bytData,0,ptr,bytes);

//更新图片数据
bmp.UnlockBits(bmpData);

该程序用VS2005+.net精简框架集开发,在PC机Windows平台上运行该程序获取图片数据正常,把同样的程序拷贝到WinCE 4.2(含.net 精简框架集2.0)运行,虽然也获取到位图数据,但数据与上位机的有所不同,RGB颜色被调整,如9会变成8之类。我以为是系统设置为16位色的缘故,我在PC机设为16位色,但取数据正常。

最后我只能用常规读写文件的方法,直接从文件中获取数据,才能保证上下位机系统同时运行正常。

分享到:
评论

相关推荐

    C#生成单色位图的方法.zip_C# 单色位图_C# 单色位图_C# 图片转单色_c#单色位图

    如果要处理大量像素,建议使用LockBits和Marshal.Copy方法,它们能直接操作位图的数据缓冲区,速度更快。 ```csharp Color singleColor = Color.Black; // 或者 Color.White for (int y = 0; y ; y++) { for (int x...

    gray_C#读取图片方式内存法_指针法_

    // 解锁位图数据 bitmap.UnlockBits(bitmapData); // 释放资源 bitmap.Dispose(); ``` 以上两种方法各有优缺点。内存法简单易用,但可能在处理大型图片时占用大量内存;指针法则能提供更高的性能,尤其在需要频繁...

    基于C#的三种数字图像处理方法

    指针法同样使用了`Bitmap.LockBits`和`Bitmap.UnlockBits`方法来锁定和解锁图像像素,但在处理像素时,采用指针直接操作内存中的像素数据,进一步减少了不必要的数据复制。 **示例代码:** ```csharp // 创建一个...

    bmp.rar_BMP图片_C 读取图片_保存bmp_打开BMP_读取bmp c#

    例如,使用Image.FromFile方法打开BMP文件,使用Bitmap类的Width和Height属性获取图像尺寸,使用LockBits和Marshal.Copy方法访问像素数据。 4. 保存BMP图片 在C和C#中,保存BMP文件的过程与读取类似,但方向相反。...

    C#图像识别

    `LockBits`锁定位图的部分或全部,使其可以直接在内存中访问,而`UnlockBits`则解锁位图,确保修改后的数据被正确更新。 2. **BitmapData类**: - `BitmapData`类提供了更底层的图像处理能力,它是通过`Bitmap....

    bmp.rar_bmp 保存_保存 bmp

    在IT领域,图像处理是计算机科学的一个重要分支,而BMP(Bitmap)文件格式是Windows操作系统中最基础的位图图像格式。"bmp.rar_bmp 保存_保存 bmp"的标题和描述表明,这是一个使用VC++编程环境开发的程序,其核心...

    用来对bmp位图文件的读取与图像的数据保存.zip

    在C#编程环境中,处理BMP位图文件的读取和图像数据的保存是一项常见的任务。BMP(Bitmap)是一种未经压缩的图像文件格式,它包含图像的颜色信息以及像素的排列方式。本教程将深入探讨如何使用C#来实现BMP文件的读取...

    VC++ 以多种方式处理位图文件的例子

    在GDI+中,我们可以使用`Graphics`类的`DrawImage()`方法来绘制位图,或者使用`LockBits()`和`UnlockBits()`方法访问位图的像素数据。 如果需要对位图进行更底层的像素级操作,可以使用C++标准库或者第三方库如...

    高效率wince图片90,180,270旋转

    根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要讲述了一种在Windows CE(简称Wince)环境下高效地实现图像90度、180度和270度旋转的方法。接下来,我们将深入探讨该方法背后的原理和技术细节,...

    MFC读取BMP图像用Halcon显示

    首先,BMP(Bitmap)是一种常见的位图文件格式,它存储的是未经压缩的像素数据,支持各种颜色深度。MFC通过CImage类提供了方便的BMP图像读写功能。要使用MFC读取BMP图像,可以创建一个CImage对象,然后调用Load函数...

    C#制作ICO格式的位图片

    // 可以使用Bitmap.LockBits和Marshal.Copy来访问并导出位图数据 } } ``` 在这个例子中,`ConvertBitmapToICO`函数接收一个Bitmap对象,然后创建ICO文件所需的头部信息。`CreateICOData`方法负责将Bitmap数据转换...

    C#生成bmp文件代码

    BMP是一种位图格式,它不包含任何压缩,所以可以存储无损的图像数据。下面我们将深入探讨如何使用C#来创建BMP文件,并结合`DllTest`这个可能的库或项目文件,来理解其在实际应用中的使用。 首先,生成BMP文件的基本...

    批量更改改变图片透明度

    // srcData = src.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); // //锁定字节数组到内存 // p = (byte*)srcData.Scan0.ToPointer(); // //获取字节数组在内存中地址 // if (src....

    如何以柔化方式显示图像

    // LockBits获取原始图像的像素数据 var data = original.LockBits(new Rectangle(0, 0, original.Width, original.Height), ImageLockMode.ReadOnly, original.PixelFormat); // 创建新的Bitmap用于存储模糊...

    asp.net 反转图片的颜色

    在实际开发中,可以使用更高效的方法,如使用LockBits和Marshal.Copy来处理大量像素,以提高性能。同时,如果处理大量图片,可以考虑使用多线程或者异步操作来提升效率。 以上就是ASP.NET中使用C#反转图片颜色的...

    C#两种获取灰度图像的方法

    第一种:在图像处理程序开发中,常会遇到将一幅彩色图像转换成灰度图像的情况,笔者在最近的一个项目中便遇到了这点。经过一翻努力最终解决,想想有必要分享一下,于是便写下此文。在本文中,将向各位读者介绍两种...

    GDI+获取BMP的像素数据保存为bin文件

    在这个主题中,我们将深入探讨如何利用GDI+来获取BMP图像的像素数据,并将这些数据保存到.bin文件中。 首先,我们需要了解BMP(Bitmap)格式,这是一种常见的位图图像文件格式,包含了图像的宽度、高度、颜色深度...

    c#拍照源代码

    在C#编程环境中,开发一个应用来调用摄像头并实现拍照功能,然后对拍摄的照片进行图像处理,如转换为灰度图,提取像素信息,并将这些数据保存到TXT文件,是一项常见的任务。以下是对这个过程的详细解释: 1. **调用...

    wince Transparent image

    在Windows CE(简称WinCE)平台上,开发C#应用程序时,透明图像的处理是一个常见的需求。这涉及到图形用户界面(GUI)的设计,特别是在创建自定义控件或进行复杂的UI渲染时。透明图像允许控件背景与窗口或其他元素...

    VC++ 实现位图透明效果示例

    为了实现透明,我们需要获取位图的alpha通道数据,并根据这些数据调整像素的颜色。这可以通过创建一个`BitmapData`结构来锁定位图的部分区域,并进行逐像素处理来实现: ```cpp Rect rect(0, 0, bitmap->GetWidth()...

Global site tag (gtag.js) - Google Analytics