1

我用 FreeImage 尝试了这段代码来加载我的 tif,我没有收到任何错误,但也没有输出。如果输入是 jpg,它就可以正常工作。我的 tiff 输入是 16 位灰度。

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。

非常感谢,丹

4

2 回答 2

1

According to http://downloads.sourceforge.net/freeimage/FreeImage3170.pdf Page 117, Appendix, Supported file formats => FreeImage does not support 16bit PNG.

The specification https://en.wikipedia.org/wiki/Portable_Network_Graphics#Pixel_format allows 16bit greyscale without alpha. I have never seen one...

于 2013-11-22T21:44:40.837 回答
0

通过使用带有最新发行版的 Wraper 文件夹中的加载和保存示例,我取得了很大进展:

FreeImage\Wrapper\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 并操纵位,所以我已经完成了这个问题。

感谢阅读,丹

于 2013-04-30T20:50:21.143 回答