在Matlab中阅读“简单”的透明PNG

时间:2015-01-16 10:45:28

标签: matlab image-processing transparency

我正在尝试将PNG图像用作工具栏图标。我目前正在使用imread来设置相应的CData值。

现在我有一些透明的图像。没有alpha通道(我找到了一些解决方案的线程),但我得到了某种"简单的透明度"。 imfread函数返回"简单"对于Transparency字段,SimpleTransparencyData字段的值为0到1的向量。

我无法在Matlab帮助和互联网上找到有关此透明度类型的任何信息。所以我想知道是否可以直接在工具栏中显示透明图像,或者如果不是如何将透明值与工具栏的背景颜色合成。

2 个答案:

答案 0 :(得分:1)

总之,您将CData值设置为NaN以表示透明度。

请参阅我在undocumentedmatlab.com上写的article,其中描述了如何为uicontrols做这件事。

对于工具栏图标,您可以用相同的方式修改CData属性 - 主要区别在于您不需要修改backgroundcolor属性。

答案 1 :(得分:0)

我对我可能想象的唯一解决方案进行了快速测试,它似乎确实有效:

我忘了提到,我正在使用索引的PNG文件。但这种透明度似乎意味着这一事实。

对索引颜色进行排序,使(部分)透明颜色位于表格的开头。 SimpleTransparencyData现在指定每种索引颜色的透明度。由于颜色多于透明度值,因此省略了不透明的颜色。

通过这些附加信息,可以很容易地将单个背景颜色与图像合成。

相关问题