似乎.NET無法使用GDI庫打開JP2(Jpeg 2000)文件。我搜索了谷歌,但無法找到任何庫或示例代碼來做到這一點。C#.NET支持JPEG 2000
有人有什麼想法嗎?我真的不想支付一個圖書館去做,除非我必須..
似乎.NET無法使用GDI庫打開JP2(Jpeg 2000)文件。我搜索了谷歌,但無法找到任何庫或示例代碼來做到這一點。C#.NET支持JPEG 2000
有人有什麼想法嗎?我真的不想支付一個圖書館去做,除非我必須..
好像我們可以使用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);
我一直在尋找類似的東西,以期實施一個,如果我可以; responses to my question意味着沒有記錄的方法對GDI +執行此操作,而.NET中的Image類使用此方法。
我相信,如果你正在寫一個WPF應用程序,那麼你可以通過Windows Imanging Components codecs擴展支持的圖像格式的列表,並有可能是一個在那裏已經(向您當地的友好的搜索引擎?)
有一個選項可以使用支持JPEG2000的插件,如DotImage,雖然在加載圖像時可能會有更多的「努力」。
我用Leadtools來顯示JPEG 2000圖像。他們提供了一個.NET庫,包括WPF和WinForms控件來顯示圖像。但是,價格標籤相當陡峭。
對於任何人碰到這個老後到來,從戈登上面的代碼的偉大工程做,但作爲jixtra指出的那樣,你確實會得到一個異常:System.DllNotFoundException:'無法加載DLL'FreeImage':找不到指定的模塊。'當通過nuget安裝時。我可以通過安裝FreeImage-dotnet-core nuget軟件包並手動將FreeImage.dll添加到bin文件夾中來使其在.net 4.6.1中工作。你可以在這裏下載dll:http://freeimage.sourceforge.net/download.html。
我需要一個更好的圖像質量,所以我做這做了一個巨大的差異,以新的JPEG質量的一些小的改動與正方體使用:
var jp2Format = FREE_IMAGE_FORMAT.FIF_JP2;
var dib = FreeImage.LoadEx("test.jp2", ref jp2Format);
FreeImage.SetResolutionX(dib, 300);
FreeImage.SetResolutionY(dib, 300);
FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JPEG, dib, "test.jpg", FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYSUPERB);
感謝您的指導。你的答案+1。但在我的窗體上渲染jpeg200圖像後,由於dib爲空,我得到了異常。**在渲染管道中拋出異常。 ---> System.ArgumentNullException:值不能爲空。參數名稱:在FreeImageAPI.FreeImage.GetBitmap(FIBITMAP dib)**處的FreeImageAPI.FreeImage.GetBitmap(FIBITMAP dib,布爾copyMetadata)處的dib。調試時,發現該方法**靜態FIBITMAP LoadEx(字符串文件名,FREE_IMAGE_LOAD_FLAGS標誌,ref FREE_IMAGE_FORMAT格式)**返回結構{0},導致上述異常。 – 2014-02-11 11:02:57