我有一个web应用程序,用户可以上传图像.我遇到的当前问题是正在上传的图像以原始格式保存到数据库中.当在网页上使用图像时,这会导致很多性能问题.我使用dotTrace来分析应用程序,我发现从数据库处理图像时会出现重大问题.
我的想法是在图像上传到服务器时调整图像大小.以下示例,我希望应用程序在用户上传新图像时执行此操作;
唯一存储的图像是上面提到的图像,web应用程序包含动态调整大小的技术.
我已经在SO上阅读了几个主题.而且他们中的大多数都指向了ImageMagick的方向.这个工具在我的公司已经很熟悉,并且在PHP项目中使用.但是这个工具有没有任何好的和稳定的C#包装器?我已经找到了下面的工具,但他们要么在Béta发布,Alpha发布,要么当前没有更新.
我也在SO上找到了这个话题.在本主题中,提供了以下代码示例;
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;
}
Run Code Online (Sandbox Code Playgroud)
总之,我有问题;
欢迎任何有关表演的其他好建议!
我试图保存具有指定编码质量的位图jpg格式.但是,在调用save方法时,我得到一个异常("参数无效.").
如果我省略了bmp.save中的最后两个参数,它可以正常工作.
EncoderParameters eps = new EncoderParameters(1);
eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 16);
ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
string outfile = outputpath + "\\" + fileaddition + sourcefile.Name;
bmp.Save(outfile,ici,eps );
bmp.Dispose();
image.Dispose();
return true;
}
ImageCodecInfo GetEncoderInfo(string mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢