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 !
我正在寻找将图像中的图片框快速转换为字节数组的方法。
我看到了这段代码,但我不需要它。因为图像的图片框是从数据库中读取的数据。 所以我不知道 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 !