【问题标题】:convert uploaded file to bitmap image in asp.net在asp.net中将上传的文件转换为位图图像
【发布时间】:2011-08-31 03:59:17
【问题描述】:

我有一个FileUpload 框和button。在我的场景中,要上传的文件是图像文件。我想将这些图像文件转换为位图并临时存储在缓冲区中。

我有一个函数,它接受两个位图输入并告诉我们两个文件是否匹配。

其中一个文件将来自ButtonClick 事件上的FileUpload 控件,而另一个位图将从数据库中读取。

谁能告诉我如何将这些文件转换为位图并将两个位图对象都传递给函数。

【问题讨论】:

  • 我还没有尝试过任何东西。从头开始。这个想法是我上面提到的,但无法弄清楚我该如何去做。您可以发布一个通用代码来完成任务吗?或者任何方向都足够了。

标签: c# asp.net image file-upload bitmap


【解决方案1】:

您可以按如下方式获取上传图片的位图:

System.Drawing.Bitmap bmpPostedImage = new System.Drawing.Bitmap(userFileUpload.PostedFile.InputStream);

然后您获取存储的副本(希望存储为字节数组并且您有一个 ID 来获取它),然后将其转换为位图,如下所示

byte[] byteArrayStoredImage = ImageService.GetImageData(imageID);
MemoryStream imgStream = new MemoryStream(byteArrayStoredImage);
System.Drawing.Bitmap bmpStoredImage = new Bitmap(imgStream);

有了两个位图(bmpPostedImage 和 bmpStoredImage),您就可以调用该函数进行比较。首先,您可以从http://www.dreamincode.net/code/snippet2859.htm 尝试此功能,看看效果如何。可能有更有效的功能可以进行比较,尝试谷歌搜索将是一件好事。

编辑

在下面的代码中找到从数据库中检索图像的代码,假设我在下面的评论中提出:

    public byte[] GetImageData(string imageID)
    {
                string connectionString = ConfigurationManager.ConnectionStrings["connectionstringname"];
        SqlConnection connection = SqlConnection(connectionString);
        connection.Open();
        SqlCommand command1 = new SqlCommand("select imgfile from myimages where imgname=@imageId", connection);
        SqlParameter myparam = command1.Parameters.Add("@imageId", SqlDbType.NVarChar, 30);
        myparam.Value = imageID;
        byte[] img = (byte[])command1.ExecuteScalar();
        connection.Close();
        return img;
    }

然后将ImageService.GetImageData(imageID)改为GetImageData(imageID);

另请注意,此处未解决错误处理问题,因此可能必须将其纳入最终代码。

【讨论】:

  • ImageService.GetImageData() 不存在。我该怎么办。我已将图像存储在数据库中的image 数据类型中。
  • @Piyush:当然 ImageService.GetImageData(imageID) 必须用您自己的代码替换,您可以使用该代码连接到数据库以检索图像,但它会返回图像的字节数组数据。
  • 您能帮我检索存储在数据库中的图像为image 数据类型并将其转换为byte[] 数组吗?
  • 我正在尝试使用ToArray(),但这对我不起作用。
  • @Piyush:我假设您熟悉 ADO.NET,并且您正在使用 SQL Server。此处的示例代码 (beansoftware.com/ASP.NET-Tutorials/…) 将使您走上正轨。但是,我将编辑我的答案,以简短而直接的方式来完成此任务。
猜你喜欢
  • 2012-07-28
  • 1970-01-01
  • 2012-12-19
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-06
  • 2013-05-12
相关资源
最近更新 更多