2014-12-30 4 views
0

Image (PNG, JPG, BMP, ETC ') 자르기를 얻고 이미지를 회전시키는 코드를 작성하려고합니다. 내가 그렇게 내가 대상이 자른 이미지입니다무손실 이미지를 얻는 방법

 Bitmap target = new Bitmap(cropRect.Width, cropRect.Height); 
     using (Graphics g = Graphics.FromImage(target)) 
     { 
      g.DrawImage(img, new Rectangle(0, 0, target.Width, target.Height), 
          cropRect, 
          GraphicsUnit.Pixel); 
     } 

를 사용하고 정보 (보간에 변화)을 잃지 않고 을 이미지를 자르려. img는 원본 이미지이고 cropRect는 자르기를 원하는 자르기 사각형입니다. 나는 이미지 크기 (줌 없음)를 유지하기 때문에 어떤 정보도 잃어 버려서는 안된다.

은 이후 내가 그것을 90도 회전하기 때문에

 target.RotateFlip(RotateFlipType.Rotate90FlipNone); 

를 사용하여 이미지를 회전하고 -이 손실을 유지해야한다. 맞습니까? 누구든지 링크를 가지고 있다면 그 주제에 대한 어떤 문서화도 찾을 수 없었습니다.

답변

0

DrawImageUnscaled/DrawImageUnscaledAndClipped을 사용하면 어쨌든 어쨌든 귀하의 경우에는 의심 스럽지만 펑키하지 않도록 절대적으로 확인하십시오. 그리고 90도 증가 및/또는 뒤집기 때문에 RotateFlip은 이미지 품질을 저하시키지 않아야합니다.

그러나 이미지를 손실이없는 형식으로 저장하면 확실하게 일부 정보가 손실됩니다.

+0

(더 많은 정보로 업데이트 됨, 내 초기 답변이 약간 남았음) – Chris

+0

ImageFormat.Bmp를 사용하여 이미지를 저장하고 있으므로 정보가 손실되지 않아야합니다. (원래 Jpeg 형식 인 경우 - 손실이없고 PNG 형식 인 경우 BMP로 저장하면 정보가 손실되지 않음) – Sandman

+0

그래, bmp 또는 png는 모든 정보를 보존합니다 (bmp에서는 알파가 아님에도 불구하고 당신은 그것을 가지고 있습니다). 나는 밤새도록 bmp보다 png를 골라 낼 것이다. – Chris