2011-01-10 6 views
1

간단한 리사이즈 방법을 사용하여 비트 맵을 새로운 크기로 변경했습니다. 원래 비트 맵의 ​​크기는 320 × 240이고 나는 것을 발견 320 × 240 비트 맵의 ​​크기를 조정 한 후 새 비트 맵의 ​​결과가 부드럽습니다. 비트 맵

  • 변경을 다시 비트 맵에 대한 몇 가지 과정을 수행 250x160
  • 에 크기를 두 번

    • 을 변경 한 후 나는 다시 320x240으로 바꾼다. 나는 bitmap이 부드럽고 예외적이지 않다는 것을 안다.

      어떻게하면 부드럽게 나타나지 않을까요?

      크기 조정 방법 :

      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

    슬픈 것은 당신이 할 수없는 것입니다. 비트 맵의 ​​크기를 더 작은 크기로 조정하면 정보가 손실됩니다. 정보는 적은 양의 정보로 작은 이미지에서 보간되어 원본 크기의 새 재구성 된 이미지를 만듭니다. 결과 이미지에 부드러운면을주는 것은이 보간입니다.

    이 문제를 방지하려면 프로세스의 일부로 이미지의 크기를 조정하지 않고 처리해야 할 방법을 찾아야합니다.

    관련 문제