我有一个Web应用程序,用户可以上传图片。目前遇到的问题是,上传的图像以原始格式保存在数据库中。当图像在网页上使用时,这会导致很多性能问题。我使用了dotTrace来分析应用程序,发现从数据库处理图像时存在显着问题。
我的想法是,在上传到服务器时调整图像大小。当用户上传新图像时,我希望应用程序执行以下操作:
1. 用户上传图像 2. 图像被调整为7,500 x 7,500像素,72 dpi的大小 3. 图像被保存到数据库中 4. 原始文件被释放
只存储上述图像,并且Web应用程序包含技术以实时调整大小。
我已经在SO上阅读了几个主题。大多数指向ImageMagick的方向。这个工具在我的公司已经很熟悉,并在PHP项目中使用。但是,是否有好的、稳定的C#封装器发布了?我已经找到了下面的工具,但它们要么是Beta版本,要么是Alpha版本,要么当前没有更新。
我的想法是,在上传到服务器时调整图像大小。当用户上传新图像时,我希望应用程序执行以下操作:
1. 用户上传图像 2. 图像被调整为7,500 x 7,500像素,72 dpi的大小 3. 图像被保存到数据库中 4. 原始文件被释放
只存储上述图像,并且Web应用程序包含技术以实时调整大小。
我已经在SO上阅读了几个主题。大多数指向ImageMagick的方向。这个工具在我的公司已经很熟悉,并在PHP项目中使用。但是,是否有好的、稳定的C#封装器发布了?我已经找到了下面的工具,但它们要么是Beta版本,要么是Alpha版本,要么当前没有更新。
我在 Stack Overflow 上也找到了this主题。在这个主题中提供了以下代码示例:
private static Image CreateReducedImage(Image imgOrig, Size newSize)
{
var newBm = new Bitmap(newSize.Width, newSize.Height);
using (var newGrapics = Graphics.FromImage(newBm))
{
newGrapics.CompositingQuality = CompositingQuality.HighSpeed;
newGrapics.SmoothingMode = SmoothingMode.HighSpeed;
newGrapics.InterpolationMode = InterpolationMode.HighQualityBicubic;
newGrapics.DrawImage(imgOrig, new Rectangle(0, 0, newSize.Width, newSize.Height));
}
return newBm;
}
简而言之,我有以下问题:
- 使用上述示例是否存在与性能相关的优势?
- 是否有一个好的、可靠的 C# 封装程序可以用来完成这个任务?
欢迎提供与性能相关的其他好建议!