UploadedFile.SaveAs(“”)之后质量降低

时间:2013-10-17 12:47:37

标签: c# asp.net

我使用<asp:FileUpload />上传文件(图片),在代码隐藏中,我使用UploadedFile.SaveAs("C://Path...")将图像保存在服务器上。

这是我的完整代码:

protected void btnAddImage_OnClick(object sender, ImageClickEventArgs e)
{
    //_fuImage is the ID of the <asp:FileUpload />
    _fuImage.SaveAs(Server.MapPath(fullPath));
}

问题在于它似乎降低了质量。以下是一些示例:左侧图像是我要上传的图像,右侧图像是上传到服务器上的图像。

Example 1 Example 2 Example 3


这要归功于Ashigore:

byte[] imageBytes = _fuImage.FileBytes;
File.WriteAllBytes(Server.MapPath(fullPath), imageBytes);

我已将字节存储在变量中,并将原始字节作为图像文件保存到服务器中。

2 个答案:

答案 0 :(得分:6)

我的猜测是你正在使用一个Image对象,它将jpg数据转换为原始位图数据,并在保存时对其进行重新编码。您只需要处理原始字节,因为它们永远不会转换为Image对象,以保持原始质量。

答案 1 :(得分:2)

您可以直接在磁盘上查看由于此操作而保存的文件而不使用该网站吗?将它与原始相比 - 有区别吗?在显示图像时,您可能会以某种方式改变图像。

另一种方法是使用FileUploadControl.OpenFile()获取流,并手动将其写入磁盘。