以下代码说明了我面临的问题。如果我用
加载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失败原因的线索?
答案 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文件。