gpt4 book ai didi

c# - validateImageData 参数和 Image.FromStream()

转载 作者:可可西里 更新时间:2023-11-01 07:54:40 26 4
gpt4 key购买 nike

我担心这个重载中的第三个参数,validateImageData。文档对此没有太多解释,只说它会导致图像数据被验证但没有详细说明,到底做了什么来验证图像数据?

public static Image FromStream (
Stream stream,
bool useEmbeddedColorManagement,
bool validateImageData
)

我想在网络应用程序中使用它,所以,我想知道如果我将 validateImageData 设置为 true 会发生什么,我想确保用户上传的是有效图像,是否建议设置将 validateImageData 设置为 true 或者是否足以在抛出异常时捕获异常?另外,将 validateImageData 设置为 true 会以任何方式影响性能吗? (用户最多可以上传250k大小的图片)

谢谢

最佳答案

从 Reflector 中,我们看到:

if (validateImageData)
{
num = SafeNativeMethods.Gdip.GdipImageForceValidation(new HandleRef(null, zero));
if (num != 0)
{
SafeNativeMethods.Gdip.GdipDisposeImage(new HandleRef(null, zero));
throw SafeNativeMethods.Gdip.StatusException(num);
}
}

所以我们看到 GdipImageForceValidation被调用(回想一下,System.Drawing 只是 GDI+ 的包装器)。此功能的文档不是很好:

This function forces validation of the image.

不是很有用。然而,重点是——图像文件被询问以确保它可以安全加载。这可能会导致将整个图像加载到内存中。

如果您接受用户的输入,我当然会将此标志设置为 true - 您永远不知道用户会上传哪种文件(格式错误或其他)。安全总比后悔好。这就是默认值为 true 的原因。

另请注意,建议将 GDI+ 用于服务器环境。您最好使用 System.Windows.Media.Imaging

关于c# - validateImageData 参数和 Image.FromStream(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/420337/

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