在 Matlab 中读取 "simple" 透明 PNG
Read "simple" transparent PNG in Matlab
我正在尝试使用 PNG 图像作为工具栏图标。我目前正在使用 imread
阅读它们并设置相应的 CData
值。
现在我有一些透明的图像。没有 alpha 通道(我找到了一些解决方案的线程),但我得到了某种 "Simple Transparency"。 imfread
函数 returns "simple" 用于 Transparency
字段,值向量介于 0 和 1 之间用于 SimpleTransparencyData
字段。
我在 Matlab 帮助和互联网上都找不到关于这种透明度类型的任何信息。所以我想知道是否可以直接在工具栏中显示透明图像,或者如果不能,如何将透明值与工具栏的背景颜色合成。
我对我可能想到的唯一解决方案进行了快速测试,它似乎确实有效:
我忘了说,我为此使用了带索引的 PNG 文件。但这种透明度似乎暗示了这一事实。
索引颜色的顺序是(部分)透明颜色在 table 的开头。 SimpleTransparencyData
现在指定每个索引颜色的透明度。不透明的颜色被排除在外,因为颜色比透明度值多。
有了这些附加信息,就可以轻松地将单一背景颜色与图像合成。
总之,您将 CData 值设置为 NaN 以表示透明度。
请参阅我在 undocumentedmatlab.com 上写的 article,其中描述了如何为 uicontrol 执行此操作。
对于工具栏图标,您可以用相同的方式修改 CData 属性 - 主要区别在于您不需要修改背景颜色 属性。
我正在尝试使用 PNG 图像作为工具栏图标。我目前正在使用 imread
阅读它们并设置相应的 CData
值。
现在我有一些透明的图像。没有 alpha 通道(我找到了一些解决方案的线程),但我得到了某种 "Simple Transparency"。 imfread
函数 returns "simple" 用于 Transparency
字段,值向量介于 0 和 1 之间用于 SimpleTransparencyData
字段。
我在 Matlab 帮助和互联网上都找不到关于这种透明度类型的任何信息。所以我想知道是否可以直接在工具栏中显示透明图像,或者如果不能,如何将透明值与工具栏的背景颜色合成。
我对我可能想到的唯一解决方案进行了快速测试,它似乎确实有效:
我忘了说,我为此使用了带索引的 PNG 文件。但这种透明度似乎暗示了这一事实。
索引颜色的顺序是(部分)透明颜色在 table 的开头。 SimpleTransparencyData
现在指定每个索引颜色的透明度。不透明的颜色被排除在外,因为颜色比透明度值多。
有了这些附加信息,就可以轻松地将单一背景颜色与图像合成。
总之,您将 CData 值设置为 NaN 以表示透明度。
请参阅我在 undocumentedmatlab.com 上写的 article,其中描述了如何为 uicontrol 执行此操作。
对于工具栏图标,您可以用相同的方式修改 CData 属性 - 主要区别在于您不需要修改背景颜色 属性。