从数码相机中提取的图像通常超过2-3 MB,因此很难通过电子邮件和其他方式传输。 这需要调整图像大小(根据文件大小而不是高度或宽度)。与MS Paint提供图像大小调整功能非常相似。 我对图像文件理论没有很好的教育。如果有人能指出我关注以下信息来源,我将不胜感激:
图像理论(各种图像格式如何工作jpeg,png,tiff等)。
调整大小后图像如何失去清晰度?是否有一些
是否有免费的.Net(我使用的是4.0)库可以执行此操作?如果没有,我可以使用任何使用com interoperabilty的库吗?
非常感谢,
答案 0 :(得分:32)
图像大小调整功能内置于.NET框架中。有几种不同的方法:
这是一个很好的blog post,涵盖了它们之间的差异。
这是GDI +的一个例子:
public void Resize(string imageFile, string outputFile, double scaleFactor)
{
using (var srcImage = Image.FromFile(imageFile))
{
var newWidth = (int)(srcImage.Width * scaleFactor);
var newHeight = (int)(srcImage.Height * scaleFactor);
using (var newImage = new Bitmap(newWidth, newHeight))
using (var graphics = Graphics.FromImage(newImage))
{
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphics.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight));
newImage.Save(outputFile);
}
}
}
答案 1 :(得分:8)
我使用了Darin Dimitrov提供的例子, 图像被充气并占用了大量磁盘空间(从1.5MB到17MB左右)。
这是由于最后一行代码中的一个小错误。
以下功能会将图像保存为位图(图像大小)。
newImage.Save(outputFile)
正确的功能应该是:
newImage.Save(outputFile, ImageFormat.Jpeg);
答案 2 :(得分:2)
Imageresizer效果很好。 http://imageresizing.net/