如何从c#放大图像(任何类型)而不会丢失质量

时间:2010-01-06 14:47:25

标签: c# asp.net image c#-4.0

问题说明了一切......

应用程序将在asp.net和c#(4.0)

3 个答案:

答案 0 :(得分:8)

这是不可能的。想想一个10位10位色彩的非常简单的情况。因此,有10 * 10 * 8 = 800位的信息。现在尝试将其放大为具有8位颜色的100 x 100位图。这需要80000位信息。这些额外信息将来自哪里?有各种interpolation方案可以尝试猜测信息应该是什么,但这是我们能做的最好的方案。必须有质量损失,因为我们不知道应该是什么信息。

以下是一些插值方案:

  1. Nearest neighbor
  2. Bilinear
  3. Bicubic
  4. hq2x
  5. 这些方法具有不同的品质。一些导致锯齿状(最近邻居),另一些导致图像柔化(双线性),而另一些导致ringing artifacts(双三次)。

答案 1 :(得分:6)

如果将图像放大到原始尺寸以外,则会导致图像质量下降。没有办法解决这个问题。

也就是说,有不同的方法/算法可用于调整大小,其中一些方法/算法可能会导致质量下降。尝试调整大小参数,找出最适合您情况的参数。

答案 2 :(得分:1)

这不是不可能的!查看Genuine Fractals插件。它使用“基于分形的插值算法”来放大图像而不会降低质量。

这是Photoshop的插件,但说明高质量的放大确实是可能的。 (我想知道是否可以通过.Net应用程序调用它?嗯......)