Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] SkiaSharp decode the png file be blur #2132

Closed
lindexi opened this issue Jun 28, 2022 · 7 comments
Closed

[BUG] SkiaSharp decode the png file be blur #2132

lindexi opened this issue Jun 28, 2022 · 7 comments

Comments

@lindexi
Copy link
Contributor

lindexi commented Jun 28, 2022

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

@xiejiang2014
Copy link

same issue

Version with issue: 2.88.0
Last known good version: 2.80.4

Screenshots
Snipaste_2022-07-01_22-39-44

@jxlarrea
Copy link

jxlarrea commented Jul 10, 2022

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

@mlptownsend
Copy link

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

@miszu
Copy link

miszu commented Jul 26, 2022

@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 ☺️

@mlptownsend
Copy link

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

@geckomx
Copy link

geckomx commented Jul 28, 2022

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 ?

@mattleibow
Copy link
Contributor

Duplicate of #2095

@mattleibow mattleibow marked this as a duplicate of #2095 Aug 13, 2022
@mattleibow mattleibow closed this as not planned Won't fix, can't repro, duplicate, stale Aug 13, 2022
@ghost ghost locked as resolved and limited conversation to collaborators Sep 12, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants