为了账号安全,请及时绑定邮箱和手机立即绑定

WPF 缩略图图像模糊

WPF 缩略图图像模糊

C#
catspeake 2022-12-24 12:29:48
我有一个WPF应用程序,它将缩略图图像保存为png。该代码运行良好,但当我打开图像时非常模糊。它抓取的图像来自画布本身。画布会根据我正在加载的图像更改其宽度和高度。所需的缩略图大小为200 x 200(像素)。这是我的代码    public void CreateThumbail(Canvas canvas, string filename)    {      RenderTargetBitmap rtb = new RenderTargetBitmap(        (int)canvas.ActualWidth,        (int)canvas.ActualHeight,        96, //dip X        96, //dpi Y        PixelFormats.Pbgra32);      rtb.Render(canvas);      PngBitmapEncoder pngImage = new PngBitmapEncoder();      pngImage.Frames.Add(CreateResizedImage(rtb, 200, 200, 0));      using (var filestream = System.IO.File.Create(filename))      {        pngImage.Save(filestream);      }    }    private static BitmapFrame CreateResizedImage(ImageSource source, int width, int height, int margin)    {      var rect = new Rect(margin, margin, width, height);      var group = new DrawingGroup();      RenderOptions.SetBitmapScalingMode(group, BitmapScalingMode.HighQuality);      group.Children.Add(new ImageDrawing(source, rect));      var drawingVisual = new DrawingVisual();      using (var drawingContext = drawingVisual.RenderOpen())        drawingContext.DrawDrawing(group);      var resizedImage = new RenderTargetBitmap(          (int)rect.Width, (int)rect.Height,// Resized dimensions          96, 96, // Default DPI values          PixelFormats.Pbgra32); // Default pixel format      resizedImage.Render(drawingVisual);      return BitmapFrame.Create(resizedImage);    }我在调整图像大小之前保存了图像,它看起来清晰锐利。然而,当我保存缩略图时,它又丑又模糊。我究竟做错了什么?我是不是过度设计了这个?提前谢谢了。
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

可能您需要尊重图像的原始尺寸。例如,400x400 的图像可以很好地缩小到 200x200,但 235x235 的图像则不会。

这不考虑开始时不是正方形的图像。

您可以尝试将图像的高度和宽度反复缩小(我会先减半),直到图像小于 200x200,然后用白色或透明填充它。

图像处理可能非常困难。我也不是这方面的专家,所以我可能会尝试像我刚刚在谷歌上找到的第 3 方库:https ://imageprocessor.org/


查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信