2013-04-12 5 views
0

이미지를 300x300 크기로 조정하는 코드가 있습니다. 그러나 크기를 조정 한 후에도 이미지의 품질은 여전히 ​​떨어집니다. 이 코드와 동일한 코드 구현을 가진 다른 웹 사이트에 게시 된 다른 솔루션을 사용해 보았지만 나에게 적합하지 않습니다. 이걸 도와주세요.품질 저하없이 JPEG 이미지 크기 조정

Stream ream = FileUploadPic.FileContent; 
      System.Drawing.Image i = new Bitmap(ream); 

      Bitmap Orig_Photo = new Bitmap(i); 
      Bitmap resize_Photo = new Bitmap(300,300); 
      Graphics thumbnailGraph = Graphics.FromImage(resize_Photo); 
      thumbnailGraph.CompositingQuality = CompositingQuality.HighQuality; 
      thumbnailGraph.SmoothingMode = SmoothingMode.AntiAlias; 
      thumbnailGraph.InterpolationMode = InterpolationMode.HighQualityBicubic; 
      thumbnailGraph.PixelOffsetMode = PixelOffsetMode.HighQuality; 

      var imageRectangle = new Rectangle(0, 0, 300, 300); 
      thumbnailGraph.DrawImage(i, imageRectangle); 
      System.Drawing.Image ii = new Bitmap(resize_Photo); 
+0

입력 이미지의 크기는 무엇입니까? –

+0

내 테스트에서 사용하는 것은 2709pxx2709px 크기입니다 ...하지만 더 작은 크기의 이미지를 시도하더라도 출력은 여전히 ​​동일합니다. – user2272856

+1

샘플을 공유 할 수있는 방법이 있습니까? "품질이 떨어진다"는 것이 확실하지 않습니다. 직선이나 텍스트가있는 경우 Bicubic 보간은 각 픽셀을 이웃 픽셀로 흐리게 만듭니다. – LouD

답변

1

사용이

내 원래 vb.net 코드를 사용하고 개발자 융합의 변환기를 사용하여 변환 한
// Create image object from upload stream 
Dim img As System.Drawing.Bitmap = System.Drawing.Bitmap.FromStream(.InputStream) 
Dim imageFormat = img.RawFormat 
Dim thumbSize As New Size thumbSize = NewthumbSize(img.Width, img.Height) 
'Thumb-nail the image to the new size' 
Dim imgOutput As New Bitmap(img, thumbSize.Width,thumbSize.Height) 
Dim myresizer As Graphics myresizer = Graphics.FromImage(imgOutput) 
myresizer.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic 
myresizer.DrawImage(img, 0, 0, thumbSize.Width, thumbSize.Height) 
'Save original image 
imgOutput.Save(Path.Combine(Server.MapPath("../photo/images"),fileName), imageFormat) 
string fileName = albumlist.SelectedValue + "_" + currentDate + fileExtension; 

이 당신을 위해 일하는 희망!

요구 사항을이 요구 사항에 맞게 수정하십시오!

+0

@adam 답변에 귀하의 이름을 포함시킬 필요가 없습니다! – rahularyansharma

+0

@rahularyansharma 미안 오래된 습관은 힘들어 죽는다! – adaam

+0

@rahularyansharma 답장을 보내 주셔서 감사합니다. 개발자 융합 변환기를 통해 코드를 C#으로 변환하려고했지만이 오류가 발생했습니다. 코드 변환 오류가 발생했습니다. 문법 오류로 인해 발생했을 수 있습니다 : - 줄 1 col 1 : EOF가 예상 됨 죄송합니다. vb.net에 익숙하지 않은 분입니다. – user2272856

0

이에게 시도를 줄 수 있도록 내가 한 번이 코드를 사용하고이 newWnewH 당신이 크기의 이미지를 다시 할 새로운 높이와 폭 여기에 C# 버전

Bitmap img = new Bitmap(newW, newH); 
     using (Graphics g = Graphics.FromImage(img)) 
     { 
      g.SmoothingMode = SmoothingMode.HighQuality; 
      g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
      g.PixelOffsetMode = PixelOffsetMode.HighQuality; 
      g.DrawImage(srcImage, new Rectangle(0, 0, newW, newH)); 
     } 

입니다.

또한 using System.Drawing; 네임 스페이스도 포함해야합니다.

+0

@ rahularyansharma - 정말 고마워요. 이제 작동 중입니다 ... 지금 내 다른 질문은 언제입니까? 바이트 배열로 변환하면 품질이 다시 떨어지게됩니까?이 도움을받을 수 있기를 바랍니다. 감사합니다. – user2272856

+0

귀하의 환영입니다. 귀하를 환영한다면, 답변으로 받아 들여야합니다. 벡터 그래픽을 사용하지 않는 한 이미지 품질을 잃지 않고 이미지의 크기를 조정할 수있는 방법이 없습니다. – rahularyansharma

관련 문제