2012-11-29 2 views
-1

여기에 나와있는 내용이 있습니다. 나는 그렇게 표준 코드를 사용하는 동안 내 노트북 ​​카메라에서 이미지를 압축하는 기능을 사용하려고 해요 : 압축이 완료인코딩 된 이미지를 저장하면 GDI + 오류가 반환됩니다.

public static byte[] EncodeImage(this Image image) 
    { 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg"); 
      EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 80); 
      EncoderParameters encoderParams = new EncoderParameters(1); 
      encoderParams.Param[0] = qualityParam; 

      image.Save(ms, jpegCodec, encoderParams); 
      return ms.ToArray(); 
     } 
    } 

후, 데이터베이스에 저장합니다. 좋은 압축률 (500 000 바이트 대 32 000)을 제공합니다. 잠시 후 winforms 응용 프로그램에서 이미지를 사용자에게 보여줘야합니다.

using (MemoryStream ms = new MemoryStream(entity.Photo)) 
    fotoPictureBox.Image = Image.FromStream(ms); 

다시 말하면 멋진 이미지를 표시합니다. 그러나 사용자가 이미지를 다운로드하고 적절한 위치에서 저장할 수 있기를 바랍니다. 그리고 이것이 모든 문제가 발생했을 때입니다. 이 코드를 사용하는 경우

는 :

fotoPictureBox.Image.Save(imageSaveFileDialog.FileName); 

을 나는 전형적인 generic GDI+ 오류를 receieve. 나는 내가 (라인 image.Save(targetPath, jpegCodec, encoderParams);를 가리키는)이 오류가 그것을

 public static void SaveEncodedImage(this Image image, string targetPath) 
    { 
     ImageCodecInfo jpegCodec = Pomocne.GetEncoderInfo("image/jpeg"); 
     EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 80); 
     EncoderParameters encoderParams = new EncoderParameters(1); 
     encoderParams.Param[0] = qualityParam; 

     image.Save(targetPath, jpegCodec, encoderParams); 
    } 

인코딩 한 코드를 사용하여 이미지를 저장하려고하면 :

An unhandled exception of type System.ArgumentException occurred in System.Drawing.dll Additional information: Parameter is not valid.

사람이 도와 주실 수 있습니까? 오히려 급한 일입니다. 고마워요.

몇 가지 질문/답변을 해결하려면 아마도이 코드로 이미지를 압축하지 않으면 이미지를 선택한 경로에 문제없이 저장할 수 있습니다. 그래서 디코딩이나 이와 비슷한 문제가 있습니다. 내가 가지고 있기 때문에 충분한 권한이 있는지 묻지 마십시오.

답변

0

은 어떤 이유로이 코드는 잘 작동 :

File.WriteAllBytes(targetPath, byteArray); 

가끔 가장 쉬운 해결책은 올바른 것 같다. 정확한 설명에 대해 확신하지 못한다. (당신은 하나를 제공 할 수있다. 나는 분명히 투표 할 것이다.) 그러나 이것은 해결된다. 어쨌든 고마워, .

관련 문제