2017-03-25 7 views
0

업로드 된 .JPG 이미지의 크기를이 방법으로 최대 너비로 조정했지만 이미지의 원본 크기가 kb보다 커졌습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 새로운 이미지를 저장할 때 내가해야 할 일이 있습니까?이미지 크기가 원래 C#보다 큰 파일 크기가되었습니다.

저는 PixelFormat의 모든 종류의 조합을 시도했습니다. PixelFormat.Format16bppRgb555

예 : 소스 이미지 1200W 크기가 조절하려고 노력하는 .JPG 1,900w입니다 ...
-
563킬로바이트 소스 파일입니다 - 크기를 조정할 파일 9백26킬로바이트 이상인 경우에도 1.9MB

public static void ResizeToMaxWidth(string fileName, int maxWidth) 
{ 
    Image image = Image.FromFile(fileName); 

    if (image.Width > maxWidth) 
    { 
     double ratio = ((double)image.Width/(double)image.Height); 
     int newHeight = (int)Math.Round(Double.Parse((maxWidth/ratio).ToString())); 

     Bitmap resizedImage = new Bitmap(maxWidth, newHeight); 

     Graphics graphics = Graphics.FromImage(resizedImage); 
     graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 
     graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; 
     graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High 

     Rectangle rectDestination = new Rectangle(0, 0, maxWidth, newHeight); 
     graphics.DrawImage(image, rectDestination, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);    
     graphics.Dispose(); 

     image.Dispose(); 
     resizedImage.Save(fileName); 
     resizedImage.Dispose(); 
    } 
    image.Dispose(); 
} 
+0

jpg 파일을 사용하고 있습니까? 디스크 크기에 대해 이야기하고 있습니까? 주로 인코딩 품질 설정에 의해 결정되는 jpg 용입니다. 그걸 제어하기 위해 explict 인코더를 추가해야합니다! – TaW

+0

저는 주로 jpg를 업로드하고 있음을 반영하여 질문을 편집했습니다. 감사의 말을 추가하십시오! – Dave

+0

비트 맵 클래스가 파일 확장명의 형식을 검색하지 않습니다. jpeg 파일 확장명을 가진 png 형식으로 저장하는 것이 좋습니다. save 메소드에 두 번째 매개 변수를 제공해야합니다. – john

답변

2

당신은 당신이 JPEG 형식으로 저장하도록 지정해야합니다

resizedImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg); 

이 그렇지 않으면 (내가 기억할 수없는) BMP/PNG로 저장을 기본값으로 사용합니다.

+1

참조 용 PNG. 다시 한번 감사드립니다. 천재. – Dave

관련 문제