2013-06-10 2 views
0

를 MemoryStream을 저장 :이미지 EXIF ​​형식

 Image image = Image.FromFile(@"C:\Users\tkaemmerling\Pictures\alpha-test-photo.jpg"); 

     image.Save(@"C:\Users\tkaemmerling\Pictures\alpha-test-photo.Exif", ImageFormat.Exif); 
     using (MemoryStream memstream = new MemoryStream()) 
     { 
      image.Save(memstream, ImageFormat.Exif); 

     } 

어떻게 : 인코더 여기 은 내 코드입니다 exif 형식의 이미지를 메모리 스트림에 저장합니까?

+0

나는 이미지를 파일로 저장 한 다음 스트림으로 저장하는 이유를 알지 못합니다. 스트림에 저장하기 전에 image.Save (fileNamePath)를 제거하려고하면 어떻게 될까요? – codingadventures

+0

동일한 오류가 발생합니다.이 코드는 testaplication의 일부 코드로, 이미지를 그림으로 저장하고 memorystream으로 저장하려고 시도한 것입니다. –

답변

0

사실 나는 디스크에 파일을 저장하는 경우에도 작동하지 않는다고 생각합니다. 저장된 파일을 열면 헤더에 PNG가 있습니다. 당신이 내부를 선택하면, 저장 방법은 다음과 같습니다

public void Save(string filename, ImageFormat format) 
{ 
    if (format == null) 
    { 
     throw new ArgumentNullException("format"); 
    } 
    ImageCodecInfo imageCodecInfo = format.FindEncoder(); 
    if (imageCodecInfo == null) 
    { 
     imageCodecInfo = ImageFormat.Png.FindEncoder(); 
    } 
    this.Save(filename, imageCodecInfo, null); 
} 

문제가 EXIF ​​형식과 관련된 인코더가없는 것입니다 -

var imageEncoders = ImageCodecInfo.GetImageEncoders(); 

디버깅을 시도 그래서 당신은뿐만 아니라 사용할 수 있습니다

Image image = Image.FromFile(@"C:\Users\tkaemmerling\Pictures\alpha-test-photo.jpg"); 

    image.Save(@"C:\Users\tkaemmerling\Pictures\alpha-test-photo.Exif", ImageFormat.Png); 
    using (MemoryStream memstream = new MemoryStream()) 
    { 
     image.Save(memstream, ImageFormat.Png); 
    }