`
mmdev
  • 浏览: 12848329 次
  • 性别: 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位色,但取数据正常。

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

分享到:
评论

相关推荐

    批量更改改变图片透明度

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

    基于c#的图像处理源代码

    "位图( *.bmp; *.jpg; *.png;...) | *.bmp; *.pcx; *.png; *.jpg; *.gif; *.tif; *.ico|" + "矢量图( *.wmf; *.eps; *.emf;...) | *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf"; opnDlg.Title = "打开图像文件"; ...

    C#数字图像处理的3种方法

    本文主要通过彩色图象灰度化来介绍C#处理数字图像的3种方法,Bitmap类、BitmapData类和Graphics类是C#处理图像的的3个重要的类。...  LockBits方法和UnlockBits方法,分别锁定和解锁系统内存中的位图像素。  

    数字图像处理算法例子,数字图像处理算法例子

    "位图( *.bmp; *.jpg; *.png;...) | *.bmp; *.pcx; *.png; *.jpg; *.gif; *.tif; *.ico|" + "矢量图( *.wmf; *.eps; *.emf;...) | *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf"; opnDlg.Title = "打开图像文件"; ...

    C#图片加水印,各论坛非常有用

    BitmapData data1 = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); BitmapData data2 = bm2.LockBits(new Rectangle(0, 0, bm2.Width, ...

    C#图像处理之图像均值方差计算的方法

    本文实例讲述了C#图像处理之图像均值方差计算的方法。分享给大家供大家参考。... System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite

    C#图像处理之图像平移的方法

    System.Drawing.Imaging.BitmapData srcData = a.LockBits(new Rectangle (0,0,a.Width ,a.Height) ,System .Drawing .Imaging .ImageLockMode .ReadWrite ,a.PixelFormat ); IntPtr ptr = srcData.Scan0; i

    C#实现把彩色图片灰度化代码分享

    彩色图片转为灰度图的公式如下: 代码如下: gray(i,j) = 0.299 * Red(i,j)+... BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRg

    C#图像处理之头发检测的方法

    本文实例讲述了C#图像处理之头发检测的方法。... System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Forma

    C#图像对比度调整的方法

    System.Drawing.Imaging.BitmapData bmpData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

    C#图像亮度调整的方法

    System.Drawing.Imaging.BitmapData bmpData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bpp

    C#实现图像反色的方法

    本文实例讲述了C#实现图像反色的方法。分享给大家供大家参考。具体如下: //定义图像反色函数 private static Bitmap PContray (Bitmap a) ... System.Drawing.Imaging.BitmapData srcData = a.LockBits(new Rectangle

    C#图像灰度级拉伸的方法

    本文实例讲述了C#图像灰度级拉伸的方法。... System.Drawing.Imaging.BitmapData srcData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, a.PixelFormat); IntPtr ptr = srcDat

    C#图像伪彩色处理方法

    本文实例讲述了C#图像伪彩色处理方法。分享给大家供大家参考。具体如下: //灰度图转伪彩色图像函数 ... System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWr

    C#图像处理之木刻效果实现方法

    本文实例讲述了C#图像处理之木刻效果实现方法。分享给大家供大家参考。... System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, Syst

    C#数字图象处理之肤色检测的方法

    本文实例讲述了C#数字图象处理之肤色检测的方法。... System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.Pix

    C#实现图像锐化的方法

    本文实例讲述了C#实现图像锐化的方法。分享给大家供大家参考。具体如下: //定义图像锐化函数 private static Bitmap Sharpen(Bitmap a,double ... System.Drawing.Imaging.BitmapData srcData = a.LockBits(new Recta

    C#图像边缘检测(Roberts)的方法

    本文实例讲述了C#图像边缘检测(Roberts)的方法。分享给大家供大家参考。具体如下: //定义roberts算子函数 private static Bitmap robert(Bitmap ... System.Drawing.Imaging.BitmapData srcData = a.LockBits(new R

    C#图像线性变换的方法

    本文实例讲述了C#图像线性变换的方法。分享给大家供大家参考。具体如下: ... System.Drawing.Imaging.BitmapData srcData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, a.PixelFo

    C#图像处理之霓虹效果实现方法

    本文实例讲述了C#图像处理之霓虹效果实现方法。分享给大家供大家参考。具体如下: //定义霓虹处理函数 public Bitmap PNihong(Bitmap ... System.Drawing.Imaging.BitmapData srcData = a.LockBits(new Rectangle (0,

Global site tag (gtag.js) - Google Analytics