gpt4 book ai didi

macos - 加载 TIFF 时 NSImage initWithContentsOfURL 缺少 alpha channel

转载 作者:行者123 更新时间:2023-12-01 02:13:52 27 4
gpt4 key购买 nike

在我的应用程序中,我使用 initWithContentsOfURL 将各种类型的图像(JPEG、TIFF、PNG、GIF 等)加载到图像中,然后加载到 OpenGL 纹理中。

加载带有 alpha channel 的图像的唯一类型是 png。 (在上面的列表中,只有 PNG 和 TIFF 可以 包含 alpha 数据。)如果我尝试加载 .tiff 图像,它会在没有 alpha channel 的情况下加载(图像的图像代表报告 alpha=NO,并且它报告 bitsPerPixel 为 24。

我可以在 PS 中使用 alpha 编辑图像,将其另存为 PNG 和 TFF,PNG 会以 alpha 格式加载到我的程序中,但 TIFF 不会。此外,我可以在 PS 中打开 TIFF 图像并确认它确实有 alpha 数据。

我在这里缺少什么?为什么我的 TIFF 图像没有加载 Alpha channel ?是否还有另一个 appkit 调用可以加载我的 TIFF 而不会将 alpha channel 放在地板上?

编辑:

自从发布这个问题以来,我发现一些 4 channel TIFF 加载了 alpha 数据,而有些则没有。我还没有弄清楚什么工作流程会导致不同的结果。

此文件在 Photoshop 中使用 alpha channel 加载,但如果您使用 -[[NSImage alloc] initWithContentsOfURL] 在 Cocoa 中加载它,则不会。 :

Image "Red Julia Seahorse crop"

一个类似的图像也有一个 alpha channel ,使用上面的 Cocoa 调用加载 alpha:

Image "Transparent Seahorses"

最佳答案

我刚刚尝试过(OSX 10.9.4)并且加载的图像完全具有渐变透明度。我使用的代码很简单:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
NSURL *imageURL = [NSURL URLWithString: @"file:/Users/john/Desktop/test.tiff"];
NSImage *image = [[NSImage alloc] initWithContentsOfURL: imageURL];
self.imageView.image = image;
}

我使用图层和不使用图层(两个测试)创建了一个 TIFF。两者都有效。我尝试了几个不同的 NSImageView 背景来验证渐变透明度是真实的。 (如果您在 IB 中选择不同的 ImageView 边框样式,背景颜色也会更改)。

我使用 Photoshop 12 (CS5) 创建图像,并在保存时手动选中 TIFF 选项对话框中的“保存透明度”复选框。

希望这里的某些内容可以帮助您解决问题。从我的测试来看,一切都按预期工作。

关于macos - 加载 TIFF 时 NSImage initWithContentsOfURL 缺少 alpha channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26853098/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com