gpt4 book ai didi

c# - 在 C# 中创建新位图时参数无效异常?

转载 作者:行者123 更新时间:2023-11-30 22:05:50 24 4
gpt4 key购买 nike

我们有一种方法可以将图像保存为正确的格式,如下所示:

public static string SaveImageAsCorrectFormat(string tempFilePath, string newFileName, string destinationDirectoryPath)
{
using (Image image = new Bitmap(tempFilePath))// Exception : Parameter is not valid.
{
string extension = image.RawFormat.GetExtension();
string newAbsoluteFilePath = Path.Combine(destinationDirectoryPath, string.Format("{0}.{1}", newFileName, extension));
image.Save(newAbsoluteFilePath, image.RawFormat);
return newAbsoluteFilePath;
}
}

但是在下一行中发生了异常:

//Parameter is not valid.
using (Image image = new Bitmap(tempFilePath))

我将其更改为以下内容,但发生了Out of memory:

 // Out of memory
using (Bitmap image = (Bitmap)Image.FromFile(tempFilePath))

图像大小为 10KB,10GB RAM 可用。

有什么问题?

附言:
我在本地没有问题。但是当我在服务器上发布软件时,出现了这个问题。

编辑:
我正在使用 windows Server 2012 R2IIS 8.5.9600.16384。应用程序(网站)可以完全控制 IIS_IUSRSIUSR
我认为问题与权限无关,因为我可以使用以下代码打开文件:

using (FileStream fileStream = File.Open(tempFilePath, FileMode.Open)) // OK
using (Image image = new Bitmap(fileStream))// Exception : Parameter is not valid.

解决方案:
我将网站 application pool identity 更改为 Local System 现在可以了,是可以更改应用程序池身份还是安全漏洞?

最佳答案

图像似乎已损坏,或者可能只是文件扩展名错误。

如果扩展名是 jpeg,.NET 将尝试将其解码为 JPEG。请注意,此行为与浏览器不同:浏览器倾向于查看文件的内容并据此决定其格式;因此,您可能会误以为 jpeg 文件很好,因为它显示在浏览器中,而实际上它包含 PNG 图像。

如果您在 Firefox 中打开图像文件,窗口标题栏会告诉您真实文件格式是什么,与其文件扩展名无关。

关于c# - 在 C# 中创建新位图时参数无效异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24094344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com