是否有一种编程方法可以在新的背景颜色/图案上绘制抗锯齿图像,从而将图像重新抗锯齿为新的背景颜色?最好可以访问 .Net 程序?
3 回答
在一般情况下没有办法做到这一点。但是,如果您稍微限制您的要求,就可以做到。
如果我们假设抗锯齿图像是我们已知的纯色,并且我们将背景作为单独的文件,我可以告诉你怎么做。
例如,假设抗锯齿图像由某种字体的单词组成,黑色。而且背景是任意的。然后,要为另一个背景“重新抗锯齿”图像,您需要两个步骤:
恢复与背景隔离的原始抗锯齿图像。为此,请执行以下算法:
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.现在您有了前景图像,只需将其与新背景混合即可。
您必须自己编写代码。System.Drawing.Bitmap
由于您使用的是 .NET,因此您可以将其用作基础。
编辑:忽略这个。它实际上无法工作,因为有些情况无法解决 - 即,当背景图像包含与前景颜色相同的区域时。
您可以使用 WPF 创建新图像并将其保存到图像文件中。
如果图像已经针对特定背景颜色进行了抗锯齿处理,那么在代码中自动移除这种抗锯齿将证明是困难的——不幸的是,最好的办法是手动编辑图像。