首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >10.7.4和libPNG

10.7.4和libPNG
EN

Stack Overflow用户
提问于 2012-05-19 18:43:09
回答 1查看 421关注 0票数 1

自从我更新到10.7.4后,我的NSImage代码就开始出现问题。当我读出图像的表示法时,选择位图图像表示法并尝试将其写出到PNG文件时,我收到一个错误。

因此,我尝试通过“常规”的方式来完成,但出现了以下错误:

我的第一个猜测是移除损坏的libPNG版本,并将其替换为可以工作的版本。我应该如何解决这个问题,有什么建议吗?我可以尝试编译一个旧版本的libPNG,读出位图图像,然后自己把它写出来。我喜欢OSX的质量如何降级到Lion中windows vista的水平。

是的,OSX使用libPNG:http://d.pr/i/nOEX

为了更清楚地说明这一点,下面是我的测试构建代码:

代码语言:javascript
复制
NSImage *image = [[NSImage alloc] initWithContentsOfFile:@"/Users/jabwd/Desktop/Icons/4099.ico"];

    NSLog(@"%@",[image representations]);
    NSImageRep *biggest = nil;
    for(NSImageRep *rep in [image representations])
    {
        if( ! biggest )
        {
            biggest = rep;
        }
        else if( [rep size].width >= [biggest size].width && [rep size].height >= [biggest size].height )
        {
            biggest = rep;
        }
    }

    if( biggest && [biggest isKindOfClass:[NSBitmapImageRep class]] )
    {
        NSBitmapImageRep *bitmap = (NSBitmapImageRep *)biggest;
        NSData *data = [bitmap representationUsingType:NSPNGFileType properties:nil];
        [data writeToFile:@"/Users/jabwd/Desktop/test.png" atomically:false];
    }

如您所见,我假设图像中有多个表示。我在这种情况下可以这样做,因为我正在加载某种类型的图标,这是一个私人项目,不会落入一些用户的手中,因为我有另一个更大的应用程序需要自动化,=>有一个特定的任务。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-27 19:17:01

看起来ImageIO.framework在10.7.4中有一些bug,它与在10.7.3中发现的libPNG版本相同。在将图像转换为pngs之前,使用automator脚本将其转换为jpeg似乎是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10664467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档