C# 数据库中的图像

C# 数据库中的图像,c#,asp.net,mysql,database,C#,Asp.net,Mysql,Database,是否可以在MYSQL数据库中存储图像文件(.jpg、.gif等)?或者它只是存储在系统中并获取图像的参考路径 我使用的是ASP.NET C#,因此如果您有示例代码,如果您可以共享它就太好了。是的,您可以将图像文件(以及任何其他文件)作为二进制数据存储在数据库中 在MySQL中,可以使用 BLOB是一个二进制大对象,可以保存可变数量的数据。这四种BLOB类型是TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们的不同之处仅在于它们所能保持的值的最大长度。[……] BLOB值被视

是否可以在MYSQL数据库中存储图像文件(.jpg、.gif等)?或者它只是存储在系统中并获取图像的参考路径


我使用的是ASP.NET C#,因此如果您有示例代码,如果您可以共享它就太好了。

是的,您可以将图像文件(以及任何其他文件)作为二进制数据存储在数据库中

在MySQL中,可以使用

BLOB是一个二进制大对象,可以保存可变数量的数据。这四种BLOB类型是TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们的不同之处仅在于它们所能保持的值的最大长度。[……]

BLOB值被视为二进制字符串(字节字符串)。它们没有字符集,排序和比较基于列值中字节的数值


您必须从图像创建一个字节数组,并将其存储在数据库中

public static byte[] ConvertImageToByteArray(Image imageIn)
{
    var ms = new MemoryStream();
    imageIn.Save(ms, ImageFormat.Png);
    return ms.ToArray();
}
要将数据转换回图像,请执行以下操作:

public static Image ConvertByteArrayToImage(byte[] byteArrayIn)
{
    var ms = new MemoryStream(byteArrayIn);
    Image returnImage = Image.FromStream(ms);
    return returnImage;
}

4GuysFromRolla.com有一篇关于这方面的文章,我在编写代码将二进制数据直接存储在数据库中时将其用作参考:


就我个人而言,我发现在文件系统中存储映像和在数据库中存储指针的麻烦要小得多。

首先是一篇与本文非常相似的文章:

public static byte[] ConvertImageToByteArray(Image imageIn)
{
    var ms = new MemoryStream();
    imageIn.Save(ms, ImageFormat.Png);
    return ms.ToArray();
}
第二个示例用于将图像存储到数据库中:

在我看来,这取决于您选择将图像存储在数据库还是文件夹中。这两种方法各有利弊

以下是asp.net论坛的简短评论:

您真的应该在数据库中存储图像吗

大约十年前,我开了一家 第一个互联网投射出一个形象 数据库。我们应该送的 各种大小和分辨率的图像 注册用户。每个图像都是 设计为一组图像, 从缩略图到最高点 决议最大的图像 可用容量约为4MB。每张图片 存储在档案中的数据占了总数据量 6 MB的空间

后端数据库未运行 在Microsoft平台上,但提供 对BLOB字段的支持。没有多少 辩论中,我们决定存储 说明和其他目录 数据库中的信息和 将图像作为单个文件存储在 著名的道路。我们还储存了 该数据库提供了足够的信息 用于检索文件的软件。 为一个相对较小的 已注册用户的数量 应用程序从未显示出可伸缩性 任何时候都没有任何人出现问题 团队或任何用户抱怨 表演

这段短暂的经历能让我特别高兴吗 来自一个相对古老的国家的经历 软件和数据库时代 技术可以作为一个例子 基于文件存储的优越性 通过数据库存储?当然不是, 但是如何在字里行间阅读呢 现代DBMS系统实现BLOB fields,我用这段经历 形成关于图像存储的想法 和数据库

简而言之,你应该考虑储存吗? 数据库中的图像?如果你需要 我建议经常编辑图片 将图像存储为单独的文件 在服务器的硬盘上。如果 图像的大小非常大(例如 例如,数百兆字节),I 建议将图像单独存储 文件系统中的文件。如果你的 图像基本上是只读的,并且 相对静止,如果你测量 大小以KB为单位,您可以 考虑将图像存储在 数据库

public static byte[] ConvertImageToByteArray(Image imageIn)
{
    var ms = new MemoryStream();
    imageIn.Save(ms, ImageFormat.Png);
    return ms.ToArray();
}

我的公司目前使用一个包含BLOB数据的数据库来存储文档和图像,我们正在尝试将其移到只存储服务器上文件的引用。数据库的容量应该是20 MB,但却有很多GB。我建议不要使用BLOB,因为它肯定会降低DB的速度

拿着这个。。。您可以找到各种各样的示例。

是的,您可以在数据库中存储二进制数据。警告——这是一场关于这些数据是否属于那里的圣战;存储为一个blob。您还可以将图像保存到文件系统,并将文件页存储在DB.Oops中。我没有看到问题的MySQL部分。我不知道这篇文章到底有多有用。所以,你说这两种方法都有可能。。。。伟大的谢谢你…太好了。。。!但事实上,我确实怀疑数据库是否可以直接存储图像或仅存储引用。。。我的疑虑消除了。谢谢你的回答