【问题标题】:Resizing JPEG without losing Quality在不损失质量的情况下调整 JPEG 大小
【发布时间】:2011-11-12 05:06:37
【问题描述】:

我正在尝试使用 .NET 开发基于 Web 的小型图像编辑器。我在调整 JPEG 图像大小时遇到​​问题。据我所知,没有办法在不损失一些质量的情况下操作 JPEG,并且认为这是唯一的方法。 Resizing an image in asp.net without losing the image quality 。在此示例中,目标图像保存为 png 。

所以我想做的是
1.当用户上传图片时,将其保存为PNG
2. 像调整大小旋转等操作它
3.另存为JPEG格式

如果我将该 png 保存为 jpeg,那么质量也会变差吗?或者它应该没问题,因为它只是用其他格式保存它而不是真正操纵它。

谢谢。

【问题讨论】:

  • 你可能想在photo.stackexchange.com上发布这个
  • @Doug Chamberlain 这更像是一个基于 C# 的编程问题

标签: c# .net image-processing


【解决方案1】:

是的,它也会降低质量。调整 JPEG 大小的困难在于压缩(又名编码)算法本身,因此与源图像格式无关,因为要对图像进行编码,您必须首先将其解码为原始格式(即位图)。

另外,请记住,如果您正在编码的图像之前是 JPEG,则编码器在调整大小后将很难再次对其进行编码。 JPEG 将图像分成 8x8 像素块来执行编码,调整大小会移动这些块的边界。这一点很重要,因为随着压缩比的提高,块之间的边界会变得更清晰——而 JPEG 在编码图像中不规则的锐利边缘方面尤其糟糕(我跳过了所有内部细节,它们现在并不重要,如果无论如何你都想知道他们)。不过,这种效果对于典型的照片压缩率并不重要。

本质上:如果您将图像编码为 JPEG,则必须至少对其进行一次编码(很明显,不是吗?;))。 JPEG(即有损)编码等于损失质量。

【讨论】:

  • 编码和质量损失没有直接关系。 RLE 或小波编码是无损的(如果您决定丢弃一些频率,小波可能是有损的)并且您仍在编码。
  • 我正在编辑以明确声明该句子是关于 JPEG 的,感谢您指出错误:)
【解决方案2】:

如果您不想失去质量,请不要使用 jpeg。只保留png有什么问题?当您将 png 重新保存为 jpeg 时,是的,根据您选择的压缩比,您会损失一些质量。这就是 jpeg 格式的本质。

【讨论】:

    【解决方案3】:

    PNG 格式是一种无损格式,所以只要您使用源图像创建 PNG 就可以了。

    供参考:

    JPEG - 大多数规范都有损(新规范也有无损格式,但还没有很多库支持它)。

    PNG - 无损

    TIFF - 无损(RLE 编码)

    BMP - 无损(RAW 编码)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      • 2011-12-18
      相关资源
      最近更新 更多