我从 System.Drawing 迁移到 SkiSharp,并有方法用 8 位填充位图 我的图片处理时间需要 50 秒,使用 System.Drawing 时速度要快得多 如何加快方法的运行时间?
private void FillBitmap8Bit(SKBitmap bmp, int row, RGBValues[] input)
{
bool setRed = (_params.Format == FrameFormat.Gray || _params.Format == FrameFormat.RGB || _params.Format == FrameFormat.Red);
bool setGreen = (_params.Format == FrameFormat.Gray || _params.Format == FrameFormat.RGB || _params.Format == FrameFormat.Green);
bool setBlue = (_params.Format == FrameFormat.Gray || _params.Format == FrameFormat.RGB || _params.Format == FrameFormat.Blue);
//bool setAlpha = (bmp.AlphaType & SKAlphaType.Premul) != 0;
//The pixel data contains alpha values that are not premultiplied.
for (int i = 0; i < _params.PixelsPerLine; i++)
{
var pixelColor = bmp.GetPixel(i, row);
if (setRed)
pixelColor = pixelColor.WithRed((byte)(input[i].R >> 8));
if (setGreen)
pixelColor = pixelColor.WithGreen((byte)(input[i].G >> 8));
if (setBlue)
pixelColor = pixelColor.WithBlue((byte)(input[i].B >> 8));
// Set the new pixel color
bmp.SetPixel(i, row, pixelColor);
}
}
加快方法的运行时间
SKBitmap.Erase
方法:
擦除(SK颜色)
用指定的颜色填充整个位图。
public void Erase (SkiaSharp.SKColor color);