我正在编写一个讨论区软件,它将为用户提供“头像”图像。我想调整上传到合理大小的任何图片的大小。我可以轻松地使用System.Drawing做到这一点,但这依赖于之前存在帽子安全问题的GDI +。问题是图像不受信任。所以我想使用一个完全托管的lib来解决这个问题,因为托管代码无法逃脱沙箱(当然它可以,但只有代码是用户提供的,而不是我的情况)。 那么有人知道JPEG,BMP,PNG和GIF的托管图像解析器库吗?如果缺少某种格式,我将不得不忍受这种格式。
编辑:Paint.NET也依赖于GDI +。
您可能也对下面的讨论感兴趣。
答案 0 :(得分:3)
VintaSoftImaging.NET怎么样?它是一个完全托管的.NET库,可以调整大小/重新采样各种图像格式(以及更多)。
所有图像库都具有非托管代码的情况肯定不是 - 图像解码器是用作者写入的任何语言编写的。有些人确实喜欢用托管语言编写它们;例如,还有LibTiff.NET和LibJpeg.NET,它们都是100%托管代码。这些是严格的编解码库,但不会进行任何调整大小。
答案 1 :(得分:3)
沙盒图像处理的适当方式 是在没有权限和磁盘访问权限的单独进程中运行ImageMagick的convert
。
缺少用于图像解析的托管代码是因为图像解析通常对性能敏感。 Dave Huang's answer概述了一些托管库 - 大概它们很慢。有一些例子,例如编译libjpeg to Flash(他们说这很快,但这只能反映出他们设定期望的程度有多低;))使用他们的Alchemy,你也许可以为.NET做同样的事情。
答案 2 :(得分:1)
默默无闻中没有安全保障。
答案 3 :(得分:1)
为什么不回避整个问题,并使用Gravatar作为头像?