首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于C#的图像大小调整

基于C#的图像大小调整
EN

Stack Overflow用户
提问于 2012-06-21 12:18:27
回答 3查看 41.3K关注 0票数 9

从数码相机中刚出的图像通常超过2-3 MB的大小,这使得它很难通过电子邮件和其他方式进行传输。这需要调整图像的大小(根据文件大小而不是高度或宽度)。非常类似于MS油漆提供图像大小调整功能。我没有受过良好的图像档案理论的教育。如果有人能向我指出以下信息来源,我将不胜感激:

  • 图像理论(各种图像格式如何工作jpeg,png,tiff等)?
  • 当调整大小时,图像如何失去锐度?有什么
  • 是否有任何免费的.Net (我正在使用4.0)库可用于此操作?如果没有,我可以使用com互操作的任何库吗?

非常感谢,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-21 12:25:06

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

  • GDI+
  • WIC
  • WPF

下面是一个很好的博客帖子,它涵盖了它们之间的差异。

下面是GDI+的一个示例:

代码语言:javascript
复制
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);
        }
    }
}
票数 40
EN

Stack Overflow用户

发布于 2015-03-09 22:30:52

我使用了达林·季米特洛夫提供的例子,Image被膨胀到并占用了大量的磁盘空间(从1.5MB到17MB左右)。

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

下面的函数将图像保存为位图(巨大的图像大小)。

代码语言:javascript
复制
newImage.Save(outputFile)

正确的职能应该是:

代码语言:javascript
复制
newImage.Save(outputFile, ImageFormat.Jpeg);
票数 10
EN

Stack Overflow用户

发布于 2012-06-21 12:25:21

Imageresizer工作得很好。http://imageresizing.net/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11137979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档