diff --git a/HPPH.SkiaSharp/ImageExtension.cs b/HPPH.SkiaSharp/ImageExtension.cs index 034745f..6872740 100644 --- a/HPPH.SkiaSharp/ImageExtension.cs +++ b/HPPH.SkiaSharp/ImageExtension.cs @@ -21,7 +21,8 @@ public static class ImageExtension SKBitmap bitmap = new(image.Width, image.Height, SKColorType.Bgra8888, SKAlphaType.Unpremul); nint pixelPtr = bitmap.GetPixels(out nint length); - image.ConvertTo().CopyTo(new Span((void*)pixelPtr, (int)length)); + + (image as IImage ?? image.ConvertTo()).CopyTo(new Span((void*)pixelPtr, (int)length)); return bitmap; } @@ -32,9 +33,9 @@ public static class ImageExtension return skImage.Encode(SKEncodedImageFormat.Png, 100).ToArray(); } - public static IImage ToImage(this SKImage skImage) => SKBitmap.FromImage(skImage).ToImage(); + public static IImage ToImage(this SKImage skImage) => SKBitmap.FromImage(skImage).ToImage(); - public static IImage ToImage(this SKBitmap bitmap) + public static IImage ToImage(this SKBitmap bitmap) { ArgumentNullException.ThrowIfNull(bitmap, nameof(bitmap)); diff --git a/HPPH.System.Drawing/ImageExtension.cs b/HPPH.System.Drawing/ImageExtension.cs index 40f0e55..54c17b6 100644 --- a/HPPH.System.Drawing/ImageExtension.cs +++ b/HPPH.System.Drawing/ImageExtension.cs @@ -18,10 +18,10 @@ public static class ImageExtension Bitmap bitmap = new(image.Width, image.Height, PixelFormat.Format24bppRgb); BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.WriteOnly, bitmap.PixelFormat); - IImage convertedImage = image.ConvertTo(); + IImage img = image as IImage ?? image.ConvertTo(); nint ptr = bmpData.Scan0; - foreach (ImageRow row in convertedImage.Rows) + foreach (ImageRow row in img.Rows) { row.CopyTo(new Span((void*)ptr, bmpData.Stride)); ptr += bmpData.Stride; @@ -37,10 +37,10 @@ public static class ImageExtension Bitmap bitmap = new(image.Width, image.Height, PixelFormat.Format32bppArgb); BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.WriteOnly, bitmap.PixelFormat); - IImage convertedImage = image.ConvertTo(); + IImage img = image as IImage ?? image.ConvertTo(); nint ptr = bmpData.Scan0; - foreach (ImageRow row in convertedImage.Rows) + foreach (ImageRow row in img.Rows) { row.CopyTo(new Span((void*)ptr, bmpData.Stride)); ptr += bmpData.Stride;