2011-02-16 103 views
4

我有一个jp2的字节数组,我该如何将其转换为JPG文件?谢谢将jp2的byte []转换为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

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。 – 2011-02-16 08:19:23