C# 将jp2的字节[]转换为jpg文件

C# 将jp2的字节[]转换为jpg文件,c#,.net,jpeg,image-conversion,C#,.net,Jpeg,Image Conversion,我有一个jp2字节数组,如何将其转换为JPG文件?多谢各位 谢谢所有的答案。我做了一些改变,几乎成功了。我是这样做的: using (var reader = command.ExecuteReader()) { while (reader.Read()) { String id = (String)reader["ID"];

我有一个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);
                        }
                    }
                }

我从数据库中读取
字节[]
。现在又出现了另一个问题;存在内存泄漏!有人能把它挑出来吗?

我们没有任何内置的.Net来做这件事,但是,你可以使用一个免费的库来做这件事

要从字节流转换,您可以尝试以下方法:

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

从nuget软件包下载FreeImageAPI。在项目中添加FreeImageAPI.dll的引用。检查您的软件包文件夹,您将拥有FreeImage.dll,并将该dll保存在project bin文件夹中。 从nuget软件包下载FreeImageAPI。在项目中添加FreeImageAPI.dll的引用。检查您的软件包文件夹,您将拥有FreeImage.dll,并将该dll保存在project bin文件夹中

    public ActionResult FileUpload(HttpPostedFileBase file)
    {
      Stream str =  file.InputStream;
      MemoryStream theMemStream = new MemoryStream();
      FIBITMAP dib = FreeImage.LoadFromStream(str);
      FreeImage.SaveToStream(dib,theMemStream,FREE_IMAGE_FORMAT.FIF_JPEG);
      return RedirectToAction("Index", theMemStream);
    }

将emstream更改为byte[],base64字符串等。

我确实支持,请参见右侧面板上我正在查看的内容。我认为您混淆了JPEG2000压缩和jp2文件格式。jp2 FLE使用JPEG2000压缩,但这并不意味着库可以读取jp2格式。@Ed S,请参见此问题:。答案被接受了——这似乎意味着jp2文件格式也被支持。好吧,我只是指出它不在列表中。我自己没用过图书馆。然而,该线程的OP似乎也会混淆术语——“似乎.NET无法打开JP2(Jpeg 2000)文件”@Ed S:你错了。。根据jp2,是JPG2000文件的标准文件扩展名
    public ActionResult FileUpload(HttpPostedFileBase file)
    {
      Stream str =  file.InputStream;
      MemoryStream theMemStream = new MemoryStream();
      FIBITMAP dib = FreeImage.LoadFromStream(str);
      FreeImage.SaveToStream(dib,theMemStream,FREE_IMAGE_FORMAT.FIF_JPEG);
      return RedirectToAction("Index", theMemStream);
    }