3

是否有一种编程方法可以在新的背景颜色/图案上绘制抗锯齿图像,从而将图像重新抗锯齿为新的背景颜色?最好可以访问 .Net 程序?

4

3 回答 3

0

在一般情况下没有办法做到这一点。但是,如果您稍微限制您的要求,就可以做到。

如果我们假设抗锯齿图像是我们已知的纯色,并且我们将背景作为单独的文件,我可以告诉你怎么做。

例如,假设抗锯齿图像由某种字体的单词组成,黑色。而且背景是任意的。然后,要为另一个背景“重新抗锯齿”图像,您需要两个步骤:

  1. 恢复与背景隔离的原始抗锯齿图像。为此,请执行以下算法:

    for_every_pixel {
    isolated_pixel_intensity = 1 - rgb_distance(mixed_pixel_rgb - background_pixel_rgb, foreground_solid_rgb)
    }
    // rgb_distance is implemented as Pythagora's Theorem in 3D.

  2. 现在您有了前景图像,只需将其与新背景混合即可。

您必须自己编写代码。System.Drawing.Bitmap由于您使用的是 .NET,因此您可以将其用作基础。

编辑:忽略这个。它实际上无法工作,因为有些情况无法解决 - 即,当背景图像包含与前景颜色相同的区域时。

于 2010-11-07T01:03:52.800 回答
0

您可以使用 WPF 创建新图像并将其保存到图像文件中。

于 2010-08-14T06:29:09.503 回答
0

如果图像已经针对特定背景颜色进行了抗锯齿处理,那么在代码中自动移除这种抗锯齿将证明是困难的——不幸的是,最好的办法是手动编辑图像。

于 2010-08-14T07:45:50.280 回答