2011-01-10 9 views
1

私はビットマップを新しいサイズに変更するために単純なリサイズメソッドを使用します。 元のビットマップのサイズは320×240であると私は私がことが判明320×240 ビットマップのサイズを変更した後、新しいビットマップの結果はスムーズbitmnap

  • 変更、それをバックビットマップ上のいくつかのプロセスを行う250x160
  • にサイズを2回

    • を変更した後私はそれを320x240に戻します。ビットマップは少し滑らかで、私は例外ではありません。

      どうすればこのようなスムーズな表示が避けられますか?

      リサイズ方法:

      private static Image resizeImage(Image imgToResize, Size size) 
      { 
      
          int sourceWidth = imgToResize.Width; 
          int sourceHeight = imgToResize.Height; 
      
          float nPercent = 0; 
          float nPercentW = 0; 
          float nPercentH = 0; 
      
          nPercentW = ((float)size.Width/(float)sourceWidth); 
          nPercentH = ((float)size.Height/(float)sourceHeight); 
      
          if (nPercentH < nPercentW) 
           nPercent = nPercentH; 
          else 
           nPercent = nPercentW; 
      
          int destWidth = (int)(sourceWidth * nPercent); 
          int destHeight = (int)(sourceHeight * nPercent); 
      
          Bitmap b = new Bitmap(destWidth, destHeight); 
          Graphics g = Graphics.FromImage((Image)b); 
          g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
      
          g.DrawImage(imgToResize, 0, 0, destWidth, destHeight); 
          g.Dispose(); 
      
          return (Image)b; 
      } 
      
  • +0

    をイメージは常に品質のいくつかの不足につながるとしているスケーリング。なぜそれを小さくして元のサイズに戻したいのですか?スムージング効果を避けるか、画像が品質を失ったのか疑問に思っているかどうかは不明です。 –

    答えて

    2

    補間モードを使用しているため、最高の画質で画像がプレフィルタされ、サイズが変更され、「スムージング効果」が発生します。

    あなたは「粗く」の結果を得るために、NearestNeighborInterpolationModeプロパティを設定してみてくださいすることができます

    Bitmap b = new Bitmap(destWidth, destHeight); 
    using (Graphics g = Graphics.FromImage((Image) b)) { 
        g.InterpolationMode = InterpolationMode.NearestNeighbor; 
        g.DrawImage(imgToResize, 0, 0, destWidth, destHeight); 
    } 
    
    +0

    ありがとう、私はInterpolationModeを変更しようとしています - これは助けにはなりません:( – Yanshof

    +0

    これは私が投稿したかった答えです。翻訳エラー。私が尋ねたときに応答を得ることができませんでした。とにかく、私から+1。 –

    5

    悲しいことはできませんのでです。 ビットマップのサイズを小さくすると、情報が失われます。情報は小さな画像から補間され(情報が少ない)、元のサイズの新しい再構成画像が作成されます。結果として生じるイメージに滑らかなアスペクトを与えるのは、この補間です。

    これを避けるには、プロセスの一部としてイメージのサイズを変更することなく、必要な処理を行うしか方法がありません。

    関連する問題