使用 opengl 硬件渲染器导出带有颜色条的 MATLAB 冲浪图会导致损坏的 png 文件
Posted
技术标签:
【中文标题】使用 opengl 硬件渲染器导出带有颜色条的 MATLAB 冲浪图会导致损坏的 png 文件【英文标题】:Exporting MATLAB surf plots with colorbars results in corrupted png files using opengl hardware renderer 【发布时间】:2014-06-25 19:18:00 【问题描述】:当我将带有颜色条的 2D 曲面图从 MATLAB 导出到 png 文件时,会导致损坏 我使用 opengl 硬件渲染器时的图像,如下所示:
其他一切正常。但是在我用彩条创建了一个人物之后,所有 我导出到 png 文件的其他曲面图已损坏,即使它们不包含 任何颜色条。
opengl info
在 MATLAB 中给出以下输出:
Version = 3.0 Mesa 10.1.0
Vendor = Intel Open Source Technology Center
Renderer = Mesa DRI Intel(R) Haswell Desktop
MaxTextureSize = 8192
Visual = 0x20 (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
Software = false
# of Extensions = 190
Driver Bug Workarounds:
OpenGLBitmapZbufferBug = 0
OpenGLWobbleTesselatorBug = 0
OpenGLLineSmoothingBug = 0
OpenGLClippedImageBug = 0
OpenGLEraseModeBug = 0
我尝试了所有这些 OpenGL 解决方法,但没有任何帮助。
有人知道如何解决这个问题吗?
我的系统:
内核:3.13.0-24-通用 64 位 处理器:Intel Haswell i7 4770K 显卡:Intel HD 4000 MATLAB 版本:R2013b在我同事的计算机上,它完全相同,但操作系统不同(debian wheezy)没有出现这个问题。在他的电脑上opengl info
给出:
Version = 2.1 Mesa 8.0.5
Vendor = VMware, Inc.
Renderer = Gallium 0.4 on llvmpipe (LLVM 0x209)
MaxTextureSize = 4096
Visual = 0xfc (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
Software = false
# of Extensions = 143
Driver Bug Workarounds:
OpenGLBitmapZbufferBug = 0
OpenGLWobbleTesselatorBug = 0
OpenGLLineSmoothingBug = 0
OpenGLClippedImageBug = 0
OpenGLEraseModeBug = 0
会不会是因为Gallium/llvmpipe
是现实中的软件渲染器?
颜色条有什么问题?
【问题讨论】:
不成功的导出是怎么做的?print
命令?
@Raab70 使用print(...,'-r300','-dpng')
和使用图形菜单中的“导出设置”都会得到相同的结果。
不清楚为什么要使用OpenGL?您还尝试过 FileExchange 中的export_fig 吗?
“文件 > 另存为...”命令是否适用于导出到 PNG?为了保持一致性,您应该提供代码来生成导致这种情况的图形。当'Renderer'
设置为'OpenGL'
时,是否有任何曲面图? colorbar
需要在场吗?
@horchler:哇。它是“颜色条”。没有它,一切正常。在生成一个带有颜色条的图形后,我创建和导出的每个其他图形都会损坏 png,即使它们没有任何颜色条。
【参考方案1】:
不幸的是,MATLAB 在标准化方面并不出色,颜色映射的问题在于,当保存或不与 MATLAB 以外的其他东西一起使用时,编码图像不会被保存或生成以便于其他应用程序使用,因为MATLAB 仅优化 MATLAB 应用程序的映射,如果我确实找到了可以帮助您的示例,我将编辑我的答案,但我希望这能对您的问题有所帮助。
否则它的 matlabs 错误,它不能正确保存图像。
【讨论】:
以上是关于使用 opengl 硬件渲染器导出带有颜色条的 MATLAB 冲浪图会导致损坏的 png 文件的主要内容,如果未能解决你的问题,请参考以下文章