创建高分辨率图像

时间:2010-08-04 13:09:50

标签: c# silverlight pivotviewer

我有一张分辨率为1600 * 1200(96 dpi)的图像(png)。

我在图像上放了一些文字,然后将其保存到文件中,以便使用silverlight的deepzoom和pivotviewer加载它。放大时文字模糊,我想知道如何让文字看起来更清晰(只有放大一点)。

这是我对图像/图形的第一次编程,所以任何信息都会很棒(即阅读链接,理解概念等)

JD。

1 个答案:

答案 0 :(得分:1)

我之前从未使用过这些控件,但最终可能无法覆盖缩放算法(如果可能的话,我不知道)。如果你在图像中有文字并且你没有使用基于矢量的图像(SVG,EMF,WMF等),那么任何类型的拉伸都会变得模糊。

不同的缩放算法(如果可能的话)可以决定如何拉伸像素。对于文本,当图像调整大小时,您正在寻找称为“最近邻居”或甚至“双立方”插值的内容。这些方法在处理方面更加昂贵,因此您可能无法像使用默认插值算法那样平滑缩放(无论是什么)。

有一些论坛帖子开始相同的讨论,但没有真正的方向。也许你可以关注他们,看看他们是如何进步的。我担心否则我无法提供太多帮助。

http://social.expression.microsoft.com/Forums/en-US/deepzoomcomposer/thread/dee528a2-06ae-4426-b096-5baafec499ff

http://weblogs.asp.net/bleroy/archive/2009/12/10/resizing-images-from-the-server-using-wpf-wic-instead-of-gdi.aspx

在上一篇文章中,他们引用了BitmapScalingMode枚举中的不同插值算法。其中一个选项是NearestNeighbor。还有一些调整大小的图像的例子。

<强>更新

this article中,作者研究了一种改变Deep Zoom控件使用的图像切片质量的方法(他正在使用Silverlight!)。作者在他的项目中用几行代码有效地改变了图像的创建方式:

if (bSmoothScaling)
{
  g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
  g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
  g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
}

在该分配列表中,您可以找到我一直提到的插值模式,以及其他一些我不知道的事情。作者确实提到了对性能的重大影响,所有内容都设置为“高质量”。

希望您可以采用这个概念并以某种方式将其合并到Silverlight中。祝你好运!