C# Png优于jpeg(水印效果)质量差?
嗨,我有两个可写位图,一个来自jpg,另一个来自png,并使用此方法在循环中混合颜色:C# Png优于jpeg(水印效果)质量差?,c#,silverlight,image,png,jpeg,C#,Silverlight,Image,Png,Jpeg,嗨,我有两个可写位图,一个来自jpg,另一个来自png,并使用此方法在循环中混合颜色: private static Color Mix(Color from, Color to, float percent) { float amountFrom = 1.0f - percent; return Color.FromArgb( (byte)(from.A * amountFrom + to.A * percent), (byte)(from.R
private static Color Mix(Color from, Color to, float percent)
{
float amountFrom = 1.0f - percent;
return Color.FromArgb(
(byte)(from.A * amountFrom + to.A * percent),
(byte)(from.R * amountFrom + to.R * percent),
(byte)(from.G * amountFrom + to.G * percent),
(byte)(from.B * amountFrom + to.B * percent));
}
我的问题是在阿尔法通道,我的水印效果不好(质量)
这是原始的png
这是原来的jpg
有什么帮助吗?在这种情况下,您可能不希望结果采用水印的任何alpha,而是希望它保留JPEG的100%不透明度。只需使用
from.A
,而不是将新的alpha设置为from.A*amountFrom+到.A*percent
编辑:此外,您希望根据PNG的alpha值调整百分比。这是您的样本,已更新:
private static Color Mix(Color from, Color to, float percent)
{
float amountTo = percent * to.A / 255.0;
float amountFrom = 1.0f - amountTo;
return Color.FromArgb(
from.A,
(byte)(from.R * amountFrom + to.R * amountTo),
(byte)(from.G * amountFrom + to.G * amountTo),
(byte)(from.B * amountFrom + to.B * amountTo));
}
我将此代码转换为Python,并以0.5%的百分比运行示例图像,结果如下:
能否更具体地说明您希望避免的水印“质量差”的问题?您的png是抗锯齿的,只有在白色背景下才好看。将其重新压缩为jpeg格式是关键。没有简单的解决方案,水印不能使用抗锯齿。我认为这与jpg源代码有关。jpeg上的有损压缩利用心理视觉模型使压缩伪影不那么明显。在压缩图像上叠加一个图像将使该模型失去平衡。解决此问题的最佳方法是对水印和源图像使用无损压缩的图像源。@Hans:理论上,通过使用可变不透明度(创建图像时),可以不考虑背景源而对图像进行反锯齿处理。这是否是用这张图片做的,是一个单独的问题。我试着保存它并在mspaint中打开。它有一个黑色的背景,但有一个白色的灯光,所以这个问题可能是适用的。你在我之前就说了+“如果我能单独给它打分,那就好了。”@Ingenu,我想知道是否有人会注意到我的新头像。我昨晚换的。