【问题标题】:Image smoothing in UWP appUWP 应用中的图像平滑
【发布时间】:2017-02-17 17:29:44
【问题描述】:

我有一个小型 UWP 应用程序,它以两种方式加载相同的图像:

        var folder = Package.Current.InstalledLocation;
        var file = await folder.GetFileAsync("TestImage.png");

        var bitmapImage1 = new BitmapImage();
        using (var stream = await file.OpenAsync(FileAccessMode.Read))
        {
            await bitmapImage1.SetSourceAsync(stream);
        }

        var bitmapImage2 = new BitmapImage(new Uri(BaseUri, "TestImage.png"));

        _image.Source = bitmapImage1;
        //_image.Source = bitmapImage2;

问题是图像控件以不同的方式显示相同的图像。对于 bitmapImage1 图像未平滑,但对于 bitmapImage2 没关系。 How it looks like。我需要在显示之前对图像进行一些操作(更改一些像素),但之后我还需要对图像进行平滑处理。你能帮我解决一下吗?

我还使用 WriteableBitmap 来更改一些像素并获得相同的结果(未平滑)。看起来我需要告诉图像控件如何绘制它。

这里是link to project了解更多信息

【问题讨论】:

    标签: c# image uwp uwp-xaml


    【解决方案1】:

    我在我这边测试了您的代码。你会发现如果你不为图像控件设置HeightWidth属性,图片看起来都一样。所以一个看起来很平滑,另一个看起来不平滑的原因是图像控件缩放图片。不缩放图片不会看起来不同。我想这可能是导致但矢量和位图图像之间的区别。

    您应该能够通过创建一个您只想在应用程序中显示的大小的平滑图片来解决它,并将图像控件设置为与图片相同的大小或不设置HeightWidth属性,这可能会解决。

    我的结果:

    【讨论】:

    • 感谢您的回答。不幸的是,或者我不理解您的正确性,或者这不是我的情况的解决方案。我需要将图像缩放到需要某种能够更改图像的图像查看器,因此用户应该能够以不同的比例查看图像。这是所有项目的存档 - 1drv.ms/u/s!AhoyshE1vPPFhJxciMBB45F5sRQdDw
    【解决方案2】:

    我在另一个线程上找到了解决方案。 如果更改代码行的顺序会有所帮助:

        var folder = Package.Current.InstalledLocation;
        var file = await folder.GetFileAsync("TestImage.png");
    
        var bitmapImage1 = new BitmapImage();
        _image.Source = bitmapImage1;
    
        using (var stream = await file.OpenAsync(FileAccessMode.Read))
        {
            await bitmapImage1.SetSourceAsync(stream);
        }
    

    所以我们应该分配图像源,然后将源流设置为位图。

    看起来,Image控件对图片的解码非常灵活,可以适应实际的UI尺寸。如果先将 BitmapImage 设置为 Image.Source,则图片会像第二个一样平滑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-18
      • 2013-01-23
      • 2013-06-06
      • 2011-09-11
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 2012-09-07
      相关资源
      最近更新 更多