SkiaSharp空图像中的随机噪声

时间:2019-06-25 07:51:38

标签: c# .net-core f# skiasharp

我正在用SkiaSharp切片某些图像,有些图片没有覆盖整个位图,并且看起来有些图片上存在随机噪声。

最简单的方法是复制只是创建新的空位图并将它们保存在循环中。像这样:

// imgSize = 224
// savePath is a new file path every time
var bm = new SKBitmap(imgSize, imgSize);
var subSaveStream = File.OpenWrite(savePath);
var subImage = SKImage.FromBitmap(bm).Encode(SKEncodedImageFormat.Png, 100);
subImage.SaveTo(subSaveStream);

首先要注意的是,保存的文件大小从305字节最大为50k!一些具有几乎看不见的伪像,一些具有疯狂的噪声模式,如下所示:

noisy image

我的问题:

我想我可以像这样ex.Erase(SKColors.Black)“擦掉它”,然后完成。但这是预期的吗?

环境:

我可以在我的机器(Win10笔记本电脑)和Debian服务器上重现它,所以我们假设它不是我的机器。

SkiaSharp 1.68 + .NET Core SDK 2.2.300

在Debian 9上加上SkiaSharp.NativeAssets.Linux 1.68

1 个答案:

答案 0 :(得分:1)

创建位图/图像/表面时,它清除内存。您将看到的是原始内存数据。

不为您清除图像的选择是为了提高性能(当您要在下一个命令中执行操作时,不要将所有像素清除为一种颜色)以及应该选择哪种颜色?

当然,您可能会争辩说选择透明会解决此“错误”,但这从来不是真正的主要问题。

相关问题