从RenderTargetBitmap编码后,编码的PNG或JPEG模糊文本

时间:2015-03-16 15:37:08

标签: windows-phone-8 winrt-xaml

我试图从画布创建一个PNG文件。画布有一个图像和三个文本块。目的是允许用户在画布上移动这些文本块,然后将屏幕截图保存到图像中。

捕获的图像看起来不错。我使用RenderTargetBitmap来捕获画布。但是一旦我尝试将RenderTargetBitmap编码为PNG或JPEG,文本就会变得非常模糊。

这是原始图片:

enter image description here

以下是我使用的代码:

var pixels = await ArrangePicturePage.ArrangedImage.GetPixelsAsync();
        byte[] bytes = pixels.ToArray();

        IRandomAccessStream stream = new InMemoryRandomAccessStream();
        BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);
        encoder.SetPixelData(BitmapPixelFormat.Bgra8, 
            BitmapAlphaMode.Ignore, 
            (uint) ArrangePicturePage.ArrangedImage.PixelHeight, 
            (uint) ArrangePicturePage.ArrangedImage.PixelWidth
            , 96.0, 96.0, bytes);
        await encoder.FlushAsync();
        byte[] resultingBuffer = new byte[stream.Size];

        await stream.ReadAsync(resultingBuffer.AsBuffer(), (uint)resultingBuffer.Length, InputStreamOptions.None);

resultsBuffer是我假设是PNG或JPEG的blob。以下是它的外观:

enter image description here

我的转化代码是否有问题导致文字模糊?

1 个答案:

答案 0 :(得分:1)

您可以通过设置传递给InterpolationModeBitmapTransform上的BitmapEncoder来控制压缩。

默认设置可优化性能而不是质量。如果您的需求是以牺牲性能为代价的,那么您可以将其提升到BitmapInterpolationMode.Fant。