8

我正在使用和在我用来将图像保存在服务器上<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));
}

问题是它似乎降低了质量。下面是一些例子:左图是我要上传的,右图是上传到服务器上的。

示例 1 示例 2 示例 3


这要归功于 Ashigore:

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

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

4

2 回答 2

5

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

于 2013-10-17T13:04:24.723 回答
1

您能否在不使用网站的情况下直接在磁盘上查看由于此操作而保存的文件?将其与原版进行比较 - 有区别吗?在显示图像时,您可能会以某种方式更改图像。

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

于 2013-10-17T13:13:00.190 回答