Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将位图转换为字节_C#_Winforms - Fatal编程技术网

C# 将位图转换为字节

C# 将位图转换为字节,c#,winforms,C#,Winforms,我正在使用winform(C#)。 我有一个位图图像,我想把位图转换成字节插入数据库。 那么,您能告诉我怎么做吗?您可以使用ImageConverter从Images获取字节数组 public static byte[] GetBytesOfImage(Image img) { ImageConverter converter = new ImageConverter(); return (byte[])converter.ConvertTo(img, typeof(byte[]

我正在使用winform(C#)。 我有一个位图图像,我想把位图转换成字节插入数据库。
那么,您能告诉我怎么做吗?

您可以使用ImageConverter从Images获取字节数组

public static byte[] GetBytesOfImage(Image img)
{
    ImageConverter converter = new ImageConverter();
    return (byte[])converter.ConvertTo(img, typeof(byte[]));
}
也可以使用BitmapImage进行转换

使用这两种方法将位图转换为字节数组,并将字节数组转换为位图


您可以为此使用以下代码:

Bitmap myBitmap = ...;
var imageStream = new MemoryStream();
using (imageStream)
{
    // Save bitmap in some format.
    myBitmap.Save(imageStream, ImageFormat.Jpeg);
    imageStream.Position = 0;

    // Do something with the memory stream. For example:
    byte[] imageBytes = imageStream.ToArray();
    // Save bytes to the database.
}
顺便说一句,我不知道您的图像会有多大以及您使用的是什么数据库,但是在数据库中存储大的blob通常不是一个好主意。对于大型blob,文件系统性能要比数据库性能好得多。SQL Server在文件系统上具有事务性存储blob的功能(他们建议将其用于1MB或更大的文件)

在数据库中存储文件时,我看到SQL Server Compact中的读取性能严重下降。我不知道其他数据库在存储大blob时的性能如何

另一种可能的解决方案是将图像存储在文件系统中,并在数据库中设置指向这些文件的指针。

您可以使用它将位图的内容保存到流中。您可以将其与
内存流一起使用,如下所示:

    MemoryStream memoryStream = new MemoryStream();
    Bitmap newBitmap = new Bitmap();
    newBitmap.Save(memoryStream, ImageFormat.Bmp);
    byte[] bitmapRecord = memoryStream.ToArray();

此代码的可能重复项将WPF
位图图像
转换为字节数组,而不是
位图
。当然,您也可以将
位图
转换为
位图图像
,但为什么要这样做呢?实际上,我在位图中有图像,我想将此图像插入数据库,但我想将该图像保存为二进制文件以存储在数据库中,如:1K243J3J34J35J3K42H123K创建一个新的newBitmap实例。
位图newBitmap=new Bitmap()。请参阅新更新。
    MemoryStream memoryStream = new MemoryStream();
    Bitmap newBitmap = new Bitmap();
    newBitmap.Save(memoryStream, ImageFormat.Bmp);
    byte[] bitmapRecord = memoryStream.ToArray();