【问题标题】:Compress image in .NET在 .NET 中压缩图像
【发布时间】:2010-11-25 12:49:02
【问题描述】:

如何在 C# 中压缩和图像文件(*bmp,*jpeg), 我必须在我的控件上显示一些图像作为背景,我正在使用以下代码来缩放我的图像

Bitmap orgBitmap = new Bitmap(_filePath);
Bitmap regBitmap = new Bitmap(reqSize.Width, reqSize.Height);

 using (Graphics gr = Graphics.FromImage(reqBitmap))
 {
  gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
  gr.DrawImage(bmp, new RectangleF(0, 0, reqSize.Width, reqSize.Height));
  }

它给了我所需的位图。 我的问题是,如果原始位图太重(2 MB),那么当我加载 50 个图像时,它会提供我所有的内存,我想尽可能多地压缩图像而不会失去这么多的质量,我怎么能在 .网络?

【问题讨论】:

    标签: c# .net image-processing gdi+ bitmap


    【解决方案1】:

    JPEG 总是会丢失一些东西,而 PNG 不会。

    这是您使用 C# 编码和解码 PNG 的方式:
    http://msdn.microsoft.com/en-us/library/aa970062.aspx

    【讨论】:

      【解决方案2】:

      也许我理解错了,但为什么不将位图转换为 jpg,然后再将它们作为控制背景导入项目?

      【讨论】:

        【解决方案3】:

        您确定需要在执行时显示大图像吗?您可以事先使用图像编辑程序(Photoshop、Paintshop Pro 等)调整它们的大小(或以稍低的质量保存它们)吗?每次运行时都进行这项工作似乎没有什么意义 - 尤其是编辑工具可能会做得更好。

        当然,如果用户从他们的硬盘中选择任意图像,这将不起作用。

        另外一点:当您完成位图时,您会处理它们吗?您没有在代码中显示...终结器也会延迟这些对象的垃圾回收。

        【讨论】:

        • 感谢您的回答,问题用户可以从硬盘中选择任何图像。是的,我在使用后处理原始图像,我在我的代码中错过了该代码
        【解决方案4】:

        祝你好运压缩 JPEG。 :) 它已经被压缩了。至于您的 BMP,请将它们设为 JPEG。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-13
          • 1970-01-01
          • 1970-01-01
          • 2011-09-21
          • 1970-01-01
          • 2020-02-29
          • 1970-01-01
          相关资源
          最近更新 更多