2013-09-02 7 views
0

나는 이미지가 다시 크기 조정하면서 낮은 품질을 얻을 수이미지 크기를 조정하면 품질이 좋지 않습니까?

enter image description here

내 코드 :

string sFile = "D:\\Testing\\" + txtnewname.Text; 
Bitmap newImage = new Bitmap(Convert.ToInt32(txtwidth.Text), Convert.ToInt32(txtHeight.Text)); 
newImage.SetResolution(image.HorizontalResolution, image.VerticalResolution); 

using (Graphics gr = Graphics.FromImage(newImage)) 
{ 
    gr.SmoothingMode = SmoothingMode.HighQuality; 
    gr.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    gr.PixelOffsetMode = PixelOffsetMode.HighQuality; 
    gr.DrawImage(image, new Rectangle(0, 0, (Convert.ToInt32(txtwidth.Text)), Convert.ToInt32(txtHeight.Text))); 
} 
newImage.Save(sFile + ".jpeg", ImageFormat.Jpeg); 
+0

스크린 샷으로 무엇인가 엉망 이었습니까? 나는 완전히 흰 그림을 묘사하지 않을 것입니다 (당신의 "애프터"그림이 "빈약 한 품질"로 비어있는 것처럼 보입니다)? – CodesInChaos

+0

무손실 형식으로 저장하려고 했습니까? 아마도 jpeg 압축 단계가 아니라 품질을 저하시키는 크기 조정이 필요합니다. – CodesInChaos

+0

당신은 정말 이런 질문에 대한 이미지를 보여 주어야합니다 ... – misha

답변

0

문제는, 저장된 품질 IMO는 꽤 잘되지 않습니다. 문제는 새로운 이미지를 저장할 다른 종횡비입니다. 그게 왜 원본 이미지와 다른 품질로 보입니다.

새 이미지를 강제로 적용하여 원본 이미지의 종횡비를 유지해야합니다. 입력으로 제공하는 높이 또는 너비에 상관없이, 그 중 하나는 원래 가로 세로 비율을 유지하도록 자동으로 설정되어야합니다.

Bitmap originalImage = Bitmap.FromFile(oFile) as Bitmap; 
double ar = (double)originalImage.Height/originalImage.Width; 
int newHeight = 100; 
int newWidth = (int)(newHeight/ar); 
Bitmap newImage = new Bitmap(newWidth, newHeight); 
//and then do what you want to do 
+0

여전히 동일한 품질 ... – Aravind

+0

@AravindSrinivas, 나에게 이미지 파일을 보낼 수 있습니까?이 http://www.fileconvoy.com/ – Irfan

+0

도 참조하십시오 높이와 너비? – Irfan

관련 문제