【问题标题】:Convert byte data to image and save? Using SQL query将字节数据转换为图像并保存?使用 SQL 查询
【发布时间】:2020-04-21 07:00:15
【问题描述】:

我有一张像下面这样的表格

IMAGEID          COVERPAGEIMAGE       IMAGENAME
------------------------------------------------
LME111201908576  0x89504E470D0A1...   NULL

我想将所有 COVERPAGEIMAGEvarbinary(max) 数据类型转换为 png/jpeg 图像,并使用 SQL 查询更新 IMAGENAME 中的名称。

该表包含近 10000 行数据。我找不到更快的方法来做到这一点,但我们将不胜感激。

【问题讨论】:

  • 你知道图片的格式吗? png 还是 jpeg?
  • 是的,他们是。您需要样本数据吗?
  • 转换为png/jpg”是什么意思,是否要提取数据库中的所有内容并保存为本地文件并且文件名应该存储在 IMAGENAME 列中?
  • 我认为@Ygalbel 是在询问您是否已经知道表格每一行中COVERPAGEIMAGE 的图像格式。例如,您发布的示例行有一个 PNG 图像,因为它以签名字节 0x89 0x50 0x4e 0x47 开头。
  • @user2316116 准确

标签: c# sql-server sql-server-2012


【解决方案1】:

File.WriteAllBytes 方法可以帮助从 blob 数据创建文件。例如,

...
using (var r =  cmd.ExecuteReader())
{
    while (r.Read())
    {
         File.WriteAllBytes("C:\temp\" + (string)r["IMAGEID"]+ ".png",
              (byte[])r["COVERPAGEIMAGE"]);
     }

}

分配 IMAGENAME 将取决于目标文件名的外观。如果文件名总是等于 IMAGEID+".png" 就像上面的例子,你可能根本不需要那个列。

同样可以只用 sql:fastest way to export blobs from table into individual files

【讨论】:

  • 我想在保存图像时添加不同的名称并在表格中更新该名称
  • 上面示例中的文件名将对应于imageid。您可以将其更改为任何其他自己的逻辑。
猜你喜欢
  • 1970-01-01
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-08
相关资源
最近更新 更多