2011-02-16 10 views
4

으로 변환 jp2의 바이트 배열을 가지고 있는데, 어떻게 그 파일을 JPG 파일로 변환 할 수 있습니까? 고마워요jp2의 바이트 []를 jpg 파일

모든 대답에 감사드립니다. 나는 약간의 차이를 만들고 거의 성공했다. 여기 내가 어떻게하는지 :

using (var reader = command.ExecuteReader()) 
       { 
        while (reader.Read()) 
        { 
         String id = (String)reader["ID"]; 
         blob = (byte[])reader["Data"]; 

         using (MemoryStream ms = new MemoryStream(blob)) 
         { 
          FIBITMAP dib = FreeImage.LoadFromStream(ms);        
          if (dib.IsNull) 
          { 
           continue; 
          }       
          string jpgName = getJpgName(id); 
          FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JPEG, dib, jpgName, FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYNORMAL); 
         } 
        } 
       } 

나는 데이터베이스에서 byte[]을 읽었다. 이제 또 다른 문제가 발생합니다. 메모리 누수가있다! 누군가 그것을 골라 낼 수 있을까요?

답변

2

우리는 이것을하기 위해 .Net에 내장 된 것이 없지만이를 수행 할 수있는 무료 라이브러리 인 FreeImage을 사용할 수 있습니다.

Here is an Example on doing this. U이 시도 할 수 바이트 스트림으로 변환에 대한

FIBITMAP dib = FreeImage.LoadEx("test.jp2"); 
//save the image out to disk  
FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JPEG, dib, "test.jpg", FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYNORMAL); 
//or even turn it into a normal Bitmap for later use 
Bitmap bitmap = FreeImage.GetBitmap(dib); 

는 :

byte[] myByte = new byte[10]; 
MemoryStream theMemStream = new MemoryStream(); 
theMemStream.Write(myByte, 0, myByte.Length); 
FreeImageBitmap fbm = FreeImageBitmap.FromStream(theMemStream); 
fbm.Save("text.jpg",FREE_IMAGE_STREAM.FIF_JPEG); 
+0

내가 지원하는 형식의 목록에 JP2 표시되지 않습니다. –

+0

오른쪽 패널의 [here] (http://freeimage.sourceforge.net/features.html)를 참조하십시오. –

+0

여기가 제가보고있는 곳입니다. 난 당신이 jp2 파일 형식으로 JPEG2000 압축을 혼란스럽게 생각합니다. jp2는 JPEG2000 압축을 사용하지만 라이브러리가 jp2 형식을 읽을 수있는 것은 아닙니다. –

관련 문제