c# 如何将 pictureBox.Image 转换为字节数组?

c# How to convert pictureBox.Image to Byte Array?

我正在寻找将图像中的图片框快速转换为字节数组的方法。

我看到了这段代码,但我不需要它。因为图像的图片框是从数据库中读取的数据。 所以我不知道 ImageFormat

public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
    MemoryStream ms = new MemoryStream();
    imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
    return ms.ToArray();
}

所以如果有人知道快速方法请告诉我

谢谢!玩得开心!

试着读一下:http://www.vcskicks.com/image-to-byte.php 希望对您有所帮助。

编辑:我猜你的代码片段来自 Fung link 编辑的 link。如果是这样,您只需向下滚动即可找到问题的答案...

第二次编辑(页面中的代码片段 - 感谢 Fedor 提供的信息):

public static byte[] ImageToByte(Image img)
{
    ImageConverter converter = new ImageConverter();
    return (byte[])converter.ConvertTo(img, typeof(byte[]));
}

这可能不是您要找的东西,但如果您正在寻找执行某些像素操作的性能,它可能对您有用..我认为在这里值得一提。

由于您已经使用 Image imageIn 加载了图像,您实际上可以直接访问图像缓冲区而无需进行任何复制,从而节省时间和资源:

public void DoStuffWithImage(System.Drawing.Image imageIn)
{
    // Lock the bitmap's bits.  
    Rectangle rect = new Rectangle(0, 0, imageIn.Width, imageIn.Height);
    System.Drawing.Imaging.BitmapData bmpData =
                    imageIn.LockBits(rect, System.Drawing.Imaging.ImageLockMode.Read,
                    imageIn.PixelFormat);

    // Access your data from here this scan0,
    // and do any pixel operation with this imagePtr.
    IntPtr imagePtr = bmpData.Scan0;

    // When you're done with it, unlock the bits.
    imageIn.UnlockBits(bmpData);
}

有关更多信息,请查看此 MSDN 页面

ps:这个 bmpData.Scan0 当然只会让您访问像素负载。又名,不 headers !