2013-04-30 45 views
0

我試過用FreeImage加載我的tif,並且我沒有錯誤,但也沒有輸出。如果輸入是jpg,它工作得很好。我的tiff輸入是16位灰度。使用FreeImage加載tiff

public void OpenRotateSave() 
    { 
     // load image, 16-bit tif 
     FIBITMAP dib = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_TIFF, "Mytif.tif",FREE_IMAGE_LOAD_FLAGS.DEFAULT);   
     // save image 
     FreeImage.SaveEx(dib, "MyTifOut.jpg"); 
     // unload bitmap 
     FreeImage.UnloadEx(ref dib); 
    } 

我試圖加載沒有修飾符,只使用文件名,結果相同。還嘗試過LoadEx。

許多感謝, 丹

回答

0

我通過使用與最新的分佈Wraper文件夾加載和保存的例子取得了很大的進展:

的FreeImage \包裝\ FreeImage.NET \ cs \ Samples \ Sample 01 - 加載和保存

事實證明,負載工作正常,但保存16位圖像似乎並不那麼容易。我試圖轉換爲8位或灰度,然後保存爲JPEG,但我沒有輸出,也沒有錯誤信息。我發現作品被保存爲PNG如下:

public void OpenSave() 
    { 
    string InFileName = "MyTiff.tif"; 
    string OutFileName = "MyOutputFile"; 
    // load image, 16-bit tif 
    FIBITMAP dib = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_TIFF, InFileName,FREE_IMAGE_LOAD_FLAGS.DEFAULT);   
    // save image 
    FreeImage.SaveEx(
     ref dib, 
     OutFileName, // FreeImage will add a file extension. NB: SaveEx will strip the file extension from OutFileName, and replace it with png, so even if OutFileName = "MyOutFile.jpg", SaveEx will save it here as MyOutFile.png" 
     FREE_IMAGE_FORMAT.FIF_PNG,        
     FREE_IMAGE_SAVE_FLAGS.DEFAULT,      
     FREE_IMAGE_COLOR_DEPTH.FICD_04_BPP,     
     true); 
    FreeImage.UnloadEx(ref dib); 
    } 

我不需要任何特殊的輸出格式,因爲我很興趣爲這個應用程序是一個開擴TIFF和操縱位,所以我完成對於這個問題。

感謝您的閱讀, 丹

1

根據http://downloads.sourceforge.net/freeimage/FreeImage3170.pdf 第117頁,附錄,支持的文件格式=>的FreeImage不支持16位PNG。

規格 https://en.wikipedia.org/wiki/Portable_Network_Graphics#Pixel_format 允許16位灰度沒有alpha。我從來沒有見過...

+0

我剛碰到這個。 FreeImage確實令人滿意地保存了16位的PNG(至少是單通道的)(在.NET下,System.Drawing.Bitmap沒有這樣做),但現在我知道它不會讀取它們。 – 2015-04-17 01:09:05