1

让我们假设我有一个正方形纵横比和宽度为 2048 像素的位图。

为了创建 Silverlight 需要的一组文件,DeepZoomImageTileSource我需要将此位图缩放到 1024,然后到 512,然后到 256 等到 1 个像素图像。

我怀疑有两种天真的方法:-

  1. 对于所需的每个图像,将原始全尺寸图像缩放到所需大小。然而,将整个图像缩放到非常小的尺寸似乎有些过分。
  2. 从一个级别缩放到下一个级别后,丢弃原始图像并将每个连续缩放的图像缩放为下一个较小图像的源。但是,我怀疑这会生成 256-64 范围内的图像,其保真度比使用选项 1 差。

请注意,与 Deep Zoom Composer 不同,此工具预计会以按需方式运行,因此它需要在合理的时间范围内(前 30 秒)完成。从好的方面来说,我只创建了一个多尺度图像,而不是多个高分辨率图像的金字塔。

我在这里超出了我的舒适区,任何图形专家有什么建议吗?我对第 2 点有误吗?第 1 点的性能是否合理,我什么都不担心?选项 3?

4

3 回答 3

2

您实际上要做的是创建 MipMaps(请参阅http://en.wikipedia.org/wiki/Mipmap)。如果您从 2 平方图像的幂开始,然后将图像缩小到一半大小,然后使用按比例缩小的图像再次将其大小减小 2,应该得到与获取原始图像并将其缩小 1 相同的结果系数 4。

半尺寸图像中的每个像素将是原始图像中 4 个像素的平均值。quater 大小图像中的每个像素将是 16 个像素的平均值。无论您取 16 个像素的平均值还是 4 个像素的平均值(其中 4 个其他像素的平均值)都没有关系。

所以我会说你可以按照选项2中提到的那样连续缩小图像。如果你想确定,那么尝试两种方法并比较图像。

于 2009-09-17T12:24:38.897 回答
2

我意识到这个问题很老,也许你没有这样做是有原因的,但是如果你得到微软的免费 Deep Zoom Composer,它带有一个用于制作 Deep Zoom 的 DLL,“DeepZoomTools.dll”。它将创建单个图像的 Deep Zoom 合成,或许多图像的合成。(该课程ImageCreator负责调整图像大小的繁重工作)。

如果您正在开发商业应用程序,您应该调查许可影响,但重用代码总是比自己编写代码更好。

于 2010-03-31T23:16:02.353 回答
1

关于1:这似乎是最好的方法。如果您不每次都重新加载源图像,那也不算过分。

关于 2:是的,您会通过逐步缩放来降低(某些)质量。

我认为 30 秒应该足以缩放图片(几次)。任何优化都在缓存结果的范围内。

于 2009-09-17T12:21:04.323 回答