首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图在64位计算机上打开openexr文件时,引发openexr崩溃。

试图在64位计算机上打开openexr文件时,引发openexr崩溃。
EN

Stack Overflow用户
提问于 2017-10-10 15:01:13
回答 1查看 116关注 0票数 0

我在我的项目中包含了openexr源代码(从http://www.openexr.com/downloads.html下载)来解码openexr图像。

我已经为64位( mac和windows)构建了我的项目,并试图打开以下文件:https://github.com/openexr/openexr-images/blob/master/ScanLines/Blobbies.exr

它在openexr源代码中崩溃,同时打开这个openexr文件。

rgbaFile =新货币基金组织::RgbaInputFile(“Blobbies.exr”);

rgbaFile->setFrameBuffer(像素- datawindow.min.x - (y * exrDimension.mWidth),1,mWidth);

rgbaFile->readPixels(datawindow.min.y,datawindow.max.y);

该文件具有数据窗口(-20,-20)到(1020,1020)和显示窗口(0,0)到(999,999)。

我能够正确地打开它时,尝试32位的建设,我的项目。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-15 08:56:41

我已经找到了问题的原因。问题不是在openexr中,而是在传递给setFrameBuffer()的参数中,即

像素- datawindow.min.x - (y * exrDimension.mWidth)

这里,y是int32类型,而exrDimension.mWidth是无符号int32类型。当这两者相乘时,会给出一个非常大的无符号int32类型值。当在setFrameBuffer函数中接收到表达式on时,表达式的总体类型是不同的。这取决于机器的结构。如果arch为32位,则为int32,如果为64位arch,则为int64。

在32位arch上,总体结果是int32的类型,给出了正确的值,而在64位arch上,由于y是负值,这个值是不正确的,不能用无符号int32表示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46669968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档