使用ASP.NET从SQL Server检索时图像质量下降

时间:2014-04-08 19:51:12

标签: c# asp.net sql-server

我正在使用ASP.NET构建一个允许用户上传图片的网页。我使用以下代码将图像转换为图像字节:

FileUpload img = (FileUpload)fileUploadLocationPic;
Byte[] imgByte = null;
string strFileExtension = Path.GetExtension(img.PostedFile.FileName.ToString());

// Create a FILE
HttpPostedFile File = fileUploadLocationPic.PostedFile;

// Create byte array
imgByte = new Byte[File.ContentLength];

// force control to load data
File.InputStream.Read(imgByte, 0, File.ContentLength);

然后我将imgByte保存到SQL Server中。但是当我从SQL Server检索图像字节时,我可以看到图像质量下降了。谁能告诉我如何解决这个问题?提前谢谢。

编辑: 我展示图片的方式是使用ashx处理程序:

        SqlConnection connection = new SqlConnection(connectionString);
        string sql = "SELECT [ChargingBoxLocationImage] FROM [Parking Lot] WHERE [ID] = @PLID";
        SqlCommand cmd = new SqlCommand(sql, connection);
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.AddWithValue("@PLID", PLID);
        connection.Open();
        object img = cmd.ExecuteScalar();
        try
        {
            return new MemoryStream((byte[])img);
        }

然后在aspx中,使用

imageChargingLocation.ImageUrl = "~/Editor/ShowImage.ashx?PLID=" + strPLID;

original retrieved

如果放大,很明显会看到差异。

1 个答案:

答案 0 :(得分:2)

您发布的代码很好,因为您直接从图像复制字节。您的代码看起来像读取数据并将其发送到客户端?

只要您不将字节加载到Bitmap然后拨打Bitmap.Save,您的代码就不会降低图像质量。