Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Png优于jpeg(水印效果)质量差?_C#_Silverlight_Image_Png_Jpeg - Fatal编程技术网

C# Png优于jpeg(水印效果)质量差?

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

嗨,我有两个可写位图,一个来自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 * 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,我想知道是否有人会注意到我的新头像。我昨晚换的。