FreeImage.LoadFromStream对于CR2文件失败

时间:2013-08-10 09:59:13

标签: c# freeimage

以下代码说明了我面临的问题。如果我用

加载CR2文件
var format = FREE_IMAGE_FORMAT.FIF_RAW;
retVal = FreeImage.LoadBitmap("AJ2A1447.cr2", ref format);

然后我成功加载了RAW文件。如果我使用像

这样的东西
using (Stream stream = new FileStream("AJ2A1447.cr2", FileMode.Open, FileAccess.Read))
{
  var format = FREE_IMAGE_FORMAT.FIF_RAW;
  freeImageHandle = FreeImage.LoadFromStream(stream, ref format);
  if (freeImageHandle.IsNull)
  {
    throw new Exception("Unable to load image from stream");
  }

  retVal = FreeImage.GetBitmap(freeImageHandle);
}

然后我不成功,因为freeImageHandle为null。我使用FileStream进行测试,真正的代码将使用MemoryStream。

任何有关LoadFromStream失败原因的线索?

2 个答案:

答案 0 :(得分:1)

有多种RAW格式,我怀疑FREE_IMAGE_FORMAT.FIF_RAW是否知道如何解码CR2。

http://en.wikipedia.org/wiki/Raw_image_format

尝试使用Windows生成的位图和jpg来查看您的代码是否有效。

答案 1 :(得分:0)

FreeImage使用libRawLite来读取Canon CR2原始格式。 但是,libRawLite不支持sRAW CR2文件。