我用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。
非常感谢,丹
发布于 2013-05-01 04:50:21
通过使用最新版本的Wraper文件夹中的Load和Save示例,我取得了很大的进展:
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-11-23 05:44:41
根据PNG第117页附录,支持的文件格式=> FreeImage不支持16位http://downloads.sourceforge.net/freeimage/FreeImage3170.pdf。
规范https://en.wikipedia.org/wiki/Portable_Network_Graphics#Pixel_format允许不使用alpha的16位灰度。我从来没见过..。
https://stackoverflow.com/questions/16290459
复制相似问题