2013-02-11 641 views
0

我很努力地使用FreeImage,并且文档对我帮助不大!在Windows窗体中显示EXR文件

我需要在C#中的一个picturebox中显示一个tif,一个exr或一个HDR图像,我没有成功,我不知道该怎么办...我得到的错误:只有类型的位图的FIT_BITMAP可以转换。 ...

任何人都可以帮我吗?我想我必须为TIFF转换为位图,但我已经尝试过,但我不知道我应该怎么办它尚未...这里是我的代码:

FIBITMAP imageToDisplay = new FIBITMAP(); 
    imageToDisplay = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_TIFF, i, FREE_IMAGE_LOAD_FLAGS.TIFF_CMYK); 
    Bitmap bitmap = FreeImage.GetBitmap(imageToDisplay); 
    pictureBox.Image = (Image)new Bitmap(bitmap);    
+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2013-02-11 16:27:31

+0

谢谢!分配标签后,我忘了检查标题! :) – user1782638 2013-02-11 16:31:54

回答

0

为了显示TIFF格式,PictureBox.Image需要System.Drawing.Image对象 - 和System.Drawing.Image.FromFile()支持TIFF图像。

我看不出任何需要涉及任何第三方依赖关系。它都嵌入到框架中。

pictureBox.Image = Image.FromFile(someImage); 

如果你的TIFF是不是一个文件(例如,如果它只是一个字节数组或一个MemoryStream) - 那也可以 - 使用Image.FromStream()

对于不支持的文件格式,您的工作是将它们转换为System.Drawing.Image支持的格式。如果这不可行,则可能无法使用PictureBox控件执行此作业。

也许问题的标题应该是“从EXR文件构造图像对象”或者“在Windows窗体中显示EXR文件”或类似内容。

+0

感谢您的帮助。不幸的是,FromFile()给我的内存不足,文件大约6mb .. FromStream()给我无效的参数:(这就是为什么我试图去FreeImage,但我得到只有类型为FIT_BITMAP的位图可以转换。 :( – user1782638 2013-02-11 16:54:53

+0

从'Image.FromFile()'的文档:“如果文件没有有效的图像格式,或者如果GDI +不支持该文件的像素格式,则此方法会引发OutOfMemoryException异常。” – tomfanning 2013-02-11 17:00:47

+0

似乎我的tiff不支持..你知道我怎么处理它,以便处理?因为它是一个有效的TIF文件...否则我必须将它转换为位图与freeimage ... – user1782638 2013-02-11 17:07:31

相关问题