在asp.net中将上传的文件转换为位图图像

本文关键字:转换 文件 位图 图像 net asp | 更新日期: 2023-09-27 17:57:30

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

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

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

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

在asp.net中将上传的文件转换为位图图像

您可以获得上传图像的位图,如下所示:

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);

另外请注意,这里没有处理错误处理,因此可能需要将其纳入最终代码中。