亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 的圖像則不會。

這不考慮開始時不是正方形的圖像。

您可以嘗試將圖像的高度和寬度反復縮?。ㄎ視葴p半),直到圖像小于 200x200,然后用白色或透明填充它。

圖像處理可能非常困難。我也不是這方面的專家,所以我可能會嘗試像我剛剛在谷歌上找到的第 3 方庫:https ://imageprocessor.org/


查看完整回答
反對 回復 2022-12-24
  • 1 回答
  • 0 關注
  • 215 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號