我目前正在開發一個c#開源照片拼接軟件(Sourceforge Link)。該軟件將大量小照片(拼貼)拼接成一個大圖像。c#:保存JPG的部分
由於最終圖像的大小通常是20k像素乘以15k像素的數量級,所以我只保存瞭如何在內存中排列圖塊的貼圖。爲了構建最終的圖像,我正在構建它的部分,即8行的帶(也可以由任何其他數字)。
在bmps的情況下,這個數據可以很容易地通過塊來保存塊,首先寫一個bmp頭,然後將ARGB數據附加到這個文件。
但是由此產生的bmps太大而無法進一步處理(例如將它們交給一些海報印刷公司)。因此,我想將這些大圖像保存爲我的硬盤上的jpgs。
現在的問題是,由於jpgs被壓縮,以塊形式寫入數據似乎非常棘手(正常的Bitmap.Save()函數會首先將完整的圖像加載到內存中,因此不適用),因爲寫入純,未壓縮的RGB數據不會這樣做。
在派對上寫jpgs的基本功能應該存在,因爲據我所知,jpg的壓縮算法可以處理大塊或8x8像素。
我查看了幾個圖像庫(FreeImage,GraphicsMagick,LibTiff.NET)以找到解決方案,但找不到任何解決方案。 LibTiff基本上具有所需的功能,但僅限於tiff圖像格式。
非常感謝您的幫助! Max
謝謝,我的確錯過了。將盡快檢查出來! – mgulde
嗯,轉出OpenJPEG基本上只能用於JPEG到JPEG2K的轉換和返回。簡單的編碼器是一個很好的解決方案,儘管它看起來很複雜;) – mgulde
嗯,_does_ openjpeg庫支持增量I/O?我看了一下(儘管文檔非常小),並且所有的圖像I/O接口似乎只能在完整的圖像上運行......您能否指出用於執行增量I/O的API調用openjpeg庫...?謝謝! – snogglethorpe