我调整了超过最大尺寸的图片。到目前为止我尝试的方法还不够好:-(
System.Drawing.Image.GetThumbnailImage
一般会生成质量非常差的图片。 可能第二个选项(或类似的东西)是最佳选择,我需要使用适当的选项调整大小。
有什么建议吗?
修改
我的选项2为某些特定图片生成了较重的图像。一般情况下按预期工作,所以我说这已经解决了。
答案 0 :(得分:3)
尝试这样的事情:
public Bitmap Resize(Bitmap originalImage, int newWidth)
{
int newHeight = (int)Math.Round(originalImage.Height * (decimal)newWidth / originalImage.Width, 0);
var destination = new Bitmap(newWidth, newHeight);
using (Graphics g = Graphics.FromImage(destination))
{
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.DrawImage(originalImage, 0, 0, newWidth, newHeight);
}
return destination;
}
答案 1 :(得分:3)
我会使用WPF库而不是GDI +库。 WPF库的执行速度更快,我认为与GDI +库相比,它们可以产生更好的结果。
查看Bertrand Le Roy的这些优秀帖子。
答案 2 :(得分:2)
创建一个新的Bitmap
对象,然后使用Graphics
对象,根据所需的调整大小引擎,以增加/减小的大小将旧图像重新绘制到新图像的缓冲区中。
// inImage is your original
Bitmap outImage = new Bitmap(newWid, newHei);
Graphics gfx = Graphics.FromImage(outImage);
gfx.InterpolationMode = InterpolationMode.HighQualityBicubic;
gfx.DrawImage(inImage,
new Rectangle(0, 0, newWid, new Hei),
new Rectangle(0, 0, inImage.Width, inImage.Height),
GraphicsUnit.Pixel);