C# 上载file.SaveAs(";)后质量降低

C# 上载file.SaveAs(";)后质量降低,c#,asp.net,C#,Asp.net,我正在使用上传一个文件(图像),在codebehind中,我使用UploadedFile.SaveAs(“C://Path…”)将图像保存到服务器上 这是我的完整代码: protected void btnAddImage_OnClick(object sender, ImageClickEventArgs e) { //_fuImage is the ID of the <asp:FileUpload /> _fuImage.SaveAs(Server.MapPat

我正在使用
上传一个文件(图像),在codebehind中,我使用
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));
}

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

我猜您正在某处使用图像对象,该对象将jpg数据转换为原始位图数据,并在保存时对其重新编码。您只需要以这样一种方式处理原始字节,即它们永远不会转换为图像对象,以保持原始质量。

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


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

是否更改图像格式?不,我只使用SaveAs(),不多不少,我不修改任何内容。两个图像的显示方式是否有所不同<代码>例如?@StevenV所有3张上传的图像都是JPEG文件,但正如你所看到的,它们在上传之前看起来相当不错。这些图像看起来并不差,但看起来更好。对比度更高。但我使用标准的
ASP.Net
方法:
UploadedFile.SaveAs(string arg)
,并且该方法不转换任何内容。好吧,您似乎在证明其他方法。你确定图像上发生的一切吗?我发布了我使用的所有代码。但我开始认为,
SaveAs(“”)
确实可以转换数据。你知道我可以使用的另一种方法吗?它不转换字节,这样我可以在上传数据时准确地保存它。为了便于讨论,请使用FileUpload.FileBytes和File.writealBytes或FileStream来保存数据,看看会发生什么。
byte[] imageBytes = _fuImage.FileBytes;
File.WriteAllBytes(Server.MapPath(fullPath), imageBytes);