SkiaSharp icon indicating copy to clipboard operation
SkiaSharp copied to clipboard

[BUG] SkiaSharp decode the png file be blur

Open lindexi opened this issue 2 years ago • 6 comments

Description

I load the png image file as FileStream and I decode it by SKBitmap.Decode. And then I use DrawBitmap to draw it.

Code

All the code in: https://github.com/lindexi/lindexi_gd/tree/eb3ac5885becdbcd609b2d9e936ada221e891221/HabicherbalaHallrujemnowaljere

using SkiaSharp;

var fileName = $"output.png";

var skImageInfo = new SKImageInfo(1920, 1080, SKColorType.Bgra8888, SKAlphaType.Opaque, SKColorSpace.CreateSrgb());

using var skImage = SKImage.Create(skImageInfo);

using (SKBitmap skBitmap = SKBitmap.FromImage(skImage))
{
    using (var skCanvas = new SKCanvas(skBitmap))
    {
        skCanvas.Clear(SKColors.White);

        var inputFile = new FileInfo("Test.png");

        using var fileStream1 = inputFile.OpenRead();

        using var resourceBitmap1 = SKBitmap.Decode(fileStream1);

        skCanvas.DrawBitmap(resourceBitmap1, new SKPoint(0, 0));

        skCanvas.Flush();

        using (var skData = skBitmap.Encode(SKEncodedImageFormat.Png, 100))
        {
            var file = new FileInfo(fileName);
            using (var fileStream = file.OpenWrite())
            {
                fileStream.SetLength(0);
                skData.SaveTo(fileStream);
            }
        }
    }
}

Expected Behavior

The output.png file is clear as:

Actual Behavior

The output.png file is blur as:

Basic Information

  • Version with issue: 2.88.0
  • Last known good version:
  • IDE: Visual Studio 2022
  • Platform Target Frameworks: .NET 6
    • Linux: Ubuntu 20.04
    • Windows Classic: Win10 19044

Screenshots

Reproduction Link

lindexi avatar Jun 28 '22 04:06 lindexi

same issue

Version with issue: 2.88.0 Last known good version: 2.80.4

Screenshots Snipaste_2022-07-01_22-39-44

xiejiang2014 avatar Jul 01 '22 14:07 xiejiang2014

Experiencing the same issue with the latest NuGet version. PNGs are messed up.

Platform: Linux (Docker image mcr.microsoft.com/dotnet/aspnet:6.0) Using SkiaSharp.NativeAssets.Linux.NoDependencies package.

Bugged version: 2.88.0 Last known good version: 2.80.3

jxlarrea avatar Jul 10 '22 04:07 jxlarrea

I can also reproduce it with the below console app (w/ 2.88.0 SkiaSharp package reference), and I had someone else try it as well with the same result. Worked fine w/ 2.80.3.

Examine the paths after it runs.

using SkiaSharp;
using System;

namespace ConsoleApp1 {
	internal class Program {
		static void Main(string[] args) {
			var base64 = "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";
			var base64Bytes = System.Convert.FromBase64String(base64);
			var base64Path = System.IO.Path.ChangeExtension(System.IO.Path.GetTempFileName(), "png");
			System.IO.File.WriteAllBytes(base64Path, base64Bytes);

			using var ms = new System.IO.MemoryStream(base64Bytes);
			using var tmp = SKBitmap.Decode(ms);
			var outputPath = System.IO.Path.ChangeExtension(System.IO.Path.GetTempFileName(), "png");
			System.IO.File.WriteAllBytes(outputPath, SavePngBytes(tmp));

			Console.WriteLine($"Base64 Path {base64Path}");
			Console.WriteLine($"Decoded Path {outputPath}");
		}

		public static byte[] SavePngBytes(SkiaSharp.SKBitmap bitmap) {
			return SaveImageBytes(bitmap, SKEncodedImageFormat.Png, 100);
		}

		public static byte[] SaveImageBytes(SkiaSharp.SKBitmap bitmap, SKEncodedImageFormat imageFormat, int imageQuality) {
			if (bitmap == null)
				throw new ArgumentNullException(nameof(bitmap));

			using (var ms = new System.IO.MemoryStream()) {
				using (var skStream = new SkiaSharp.SKManagedWStream(ms, false)) {
					using (var pixmap = bitmap.PeekPixels()) {
						pixmap.Encode(skStream, imageFormat, imageQuality);
					}
					return ms.ToArray();
				}
			}
		}
	}
}

The expected output: image

The bad output: image

mlptownsend avatar Jul 18 '22 23:07 mlptownsend

@mlptownsend @jxlarrea @xiejiang2014 @lindexi I think it might be the same as #2095, which was fixed in 2.88.1-pre1 (at least for me). Might be worth to give it a shot ☺️

miszu avatar Jul 26 '22 11:07 miszu

Yeah, it's working fine in the latest previews. I was kinda hoping for a blessed stable release that contains the fix.

mlptownsend avatar Jul 27 '22 18:07 mlptownsend

For me, every attempt with .NET 6 failed .NET 5 works, no matter what version i use.

@mlptownsend Does it work for you with .NET 6 ?

geckomx avatar Jul 28 '22 06:07 geckomx

Duplicate of #2095

mattleibow avatar Aug 13 '22 19:08 mattleibow