如何在Windows Phone 7中纠正色带问题?

6

我的Windows Phone 7应用程序有非常漂亮的背景图片,但在16位色设备上被颜色带破坏了。有没有办法可以纠正这个问题?我已经尝试使用Photoshop保存在多种模式下,但都没有成功。

4个回答

10

您需要使用抖动处理。Floyd-Steinberg是一个简单且运行速度快的好算法。

您不需要像其他答案建议的那样每像素8位,您可以直接使用每像素16位。在开始之前,您需要了解它是如何分割为R/G/B的。

这里有一些示例,首先是原始的24位:

alt text

接下来是一个没有抖动的16位:

alt text

最后使用 Floyd-Steinberg 抖动算法实现了 16 位色深。

alt text

附言:我用Paint Shop Pro完成了这个操作,不知道Photoshop是否有类似的功能。你也可以通过编程实现。


1
谢谢,这正是我所需要的!有人知道如何在Photoshop中实现它并正确保存吗? - Jamey McElveen
1
@Jamey,那听起来像另一个很好的问题...但恐怕不适合在这个论坛上提问。如果我感到无聊,我可能会写一个Python脚本来完成它,但这需要利用我的空闲时间,不会很快完成。ImageMagick也可能能够通过-depth 5开关来完成它。 - Mark Ransom
1
@Jamey,你可以在Photoshop中转换为16位,但我不知道是否应用抖动。http://forums.adobe.com/message/1904192 - Mark Ransom
谢谢!我很感激你所有的评论。 - Jamey McElveen
@JameyMcElveen,我知道你提出这个问题已经很久了,但是我终于完成了自己的实现(用C++):https://dev59.com/3GbWa4cB1Zd3GeqPXX46#11650801 - Mark Ransom

3
解决方案是不直接使用渐变。
在设备支持的颜色范围内,没有绕过这个问题的方法。
另一种选择是创建一个抖动图像并使用它代替原来的渐变图像。

这些踩是因为人们不想听这个吗?还是有其他解决方案? - Matt Lacey
1
可能是因为这不是人们想听到的内容。他们更愿意你撒些魔法软件粉末,只用两行代码就能修复他们的硬件问题。 - ctacke

0

0
如果我将模式设置为8位并使用“Web调色板”进行抖动,这会产生相当不错的结果。这比带状图像好得多。但是最终我可能会得到两个版本的背景图像。一个用于16位,另一个用于24位及以上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接