конвертировать байт [] из jp2 в файл jpg - PullRequest
5 голосов
/ 16 февраля 2011

У меня есть байтовый массив 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[] из базы данных. Теперь возникает другая проблема; существует утечка памяти! Может ли кто-нибудь это выбрать?

1 Ответ

2 голосов
/ 16 февраля 2011

У нас нет ничего встроенного в .Net для этого, но вы можете использовать FreeImage , которая является бесплатной библиотекой, которая может сделать это.

ВотПример для этого .

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);
...