使用C#的图像尺寸调整(Image resizing using C#)

2019-06-25 15:33发布

这是从数码相机新鲜出炉的图像往往是2-3 MB以上尺寸使得很难为它得到转移通过电子邮件等方式吧。 这需要被调整大小(文件大小,而不是高度或宽度计)的图像。 颇为相似,MS画图提供图像缩放功能。 我学历不高的图像文件的理论。 我将不胜感激,如果有人可以点我朝着以下信息来源:

  • 图像理论(如何将各种图片格式JPEG工作,PNG,TIFF等)?

  • 如何调整大小时图像失去其锐度? 有一些

  • 是否有任何免费的.NET(我用4.0)库可以这样做呢? 如果不是我可以使用任何库使用COM interoperabilty?

非常感谢,

Answer 1:

图像大小调整是功能内置到.NET框架。 有几个不同的方法:

  • GDI +
  • WIC
  • WPF

这里是一个不错的博客文章涉及它们之间的差异。

下面是与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);
        }
    }
}


Answer 2:

我使用达林季米特洛夫提供的示例中,图像是膨胀以和占用了大量的磁盘空间(从1.5MB到17MB左右)。

这是由于在最后一行代码中的一个小错误。

下面的功能将图像保存为位图(巨大的图像尺寸)。

newImage.Save(outputFile)

正确的功能应该是:

newImage.Save(outputFile, ImageFormat.Jpeg);


Answer 3:

Imageresizer效果很好。 http://imageresizing.net/



文章来源: Image resizing using C#