通过int数组设置非托管图像

时间:2015-09-07 08:57:48

标签: c# image aforge

我有一个8字节的数组,其中我想将它放入长度为4(向下)宽度为2(向右)的位图。我的代码:

Marshal.WriteByte(pixels, 4 * Marshal.SizeOf(typeof(Byte)), 0);

问题在于,对于第一列,图像对应于我的数组:

enter image description here

但是,如果我尝试改变:

Marshal.WriteByte(pixels, 4 * Marshal.SizeOf(typeof(Byte)), 255);

can [:create, :read], ProjectQuestion do |project_question|
  can? :read, project_question.project
end

我希望第2列中的像素,第1行变为白色。然而,这不会发生。代码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

您必须将stride的{​​{1}}构造函数参数值设置为2。

  

步幅:图像步幅(行数以字节为单位)。

通过更改以下行:

new UnmanagedImage()

代码将生成以下图像:

enter image description here

当你改变时:

var newImage = new UnmanagedImage(pixels, 2, 4, 2, System.Drawing.Imaging.PixelFormat.Format8bppIndexed);

Marshal.WriteByte(pixels, 4 * Marshal.SizeOf(typeof(Byte)), 0);

产生的图像如下:

enter image description here