【发布时间】:2015-01-07 07:20:08
【问题描述】:
在我的应用程序中,我使用 initWithContentsOfURL 将各种类型的图像(JPEG、TIFF、PNG、GIF 等)加载到图像中,然后加载到 OpenGL 纹理中。
加载带有 Alpha 通道的图像的唯一类型是 png。 (在上面的列表中,只有 PNG 和 TIFF 可以包含 alpha 数据。)如果我尝试加载 .tiff 图像,它会在没有 alpha 通道的情况下加载(图像的图像代表报告 alpha=NO,它报告的 bitsPerPixel 为 24。
我可以在 PS 中编辑带有 alpha 的图像,将其保存为 PNG 和 TFF,PNG 会在我的程序中加载 alpha,但 TIFF 不会。此外,我可以在 PS 中打开 TIFF 图像并确认它确实有 alpha 数据。
我在这里缺少什么?为什么我的 TIFF 图像没有使用 Alpha 通道加载?是否有另一个 appkit 调用可以让我加载我的 TIFF 而不会将 alpha 通道丢到地板上?
编辑:
自从发布此问题以来,我发现一些 4 通道 TIFF 加载了 alpha 数据,而有些则没有。我还没有弄清楚什么工作流程会导致不同的结果。
此文件在 Photoshop 中使用 Alpha 通道加载,但如果您使用 -[[NSImage alloc] initWithContentsOfURL] 在 Cocoa 中加载它则不会:
Image "Red Julia Seahorse crop"
同样具有 alpha 通道的类似图像使用上述 Cocoa 调用加载了 alpha:
【问题讨论】: