从PictureBox图像创建位图

时间:2019-07-17 20:08:09

标签: .net image bitmap gdi+ bitmapdata

在.NET应用程序中,我在Format1bppIndexed中存储了不同格式的图像(例如PictureBoxes)。我可以使用框的属性Image来获取它们。

然后,我需要将它们转换为Bitmap类以访问内部数据。 (Image类不像LockBits那样支持Bitmap。)

现在要将Image转移到Bitmap,您需要Bitmap构造函数接受一个Image参数。麻烦始于此:此构造函数将图像转换为Format32bppRgb格式,而不管初始类型如何,并且该构造函数没有重载,无法强制使用格式。

更糟糕的是,当格式为Format16bppGrayScale时,构造函数会引发System.ArgumentException

但是我想访问原始数据而没有中间转换,包括16位图像。有什么解决方法吗?


经过更多研究,我发现在.NET下对16位图像的支持确实很差。特别是,您不能DrawImage显示它们。

1 个答案:

答案 0 :(得分:0)

关于您的请求的一些细节对我来说还不是很清楚,所以我假设了一些。

简单的解决方案可能是创建一个支持您所需内容的“ 阴影对象”,然后让PictureBox显示处理后的结果。实际上,您将在image的{​​{1}}上执行的任何操作都将应用于您的影子对象。

但是我不确定,是否可以将其应用于这种特定情况。这主要取决于为什么,您需要使用PictureBox将像素放入存储器中。这可能表明您正在提高速度,并且使用阴影对象可能会使您回到第一个平方或更差。