自从我更新到10.7.4后,我的NSImage代码就开始出现问题。当我读出图像的表示法时,选择位图图像表示法并尝试将其写出到PNG文件时,我收到一个错误。
因此,我尝试通过“常规”的方式来完成,但出现了以下错误:

我的第一个猜测是移除损坏的libPNG版本,并将其替换为可以工作的版本。我应该如何解决这个问题,有什么建议吗?我可以尝试编译一个旧版本的libPNG,读出位图图像,然后自己把它写出来。我喜欢OSX的质量如何降级到Lion中windows vista的水平。
是的,OSX使用libPNG:http://d.pr/i/nOEX
为了更清楚地说明这一点,下面是我的测试构建代码:
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];
}如您所见,我假设图像中有多个表示。我在这种情况下可以这样做,因为我正在加载某种类型的图标,这是一个私人项目,不会落入一些用户的手中,因为我有另一个更大的应用程序需要自动化,=>有一个特定的任务。
发布于 2012-05-27 19:17:01
看起来ImageIO.framework在10.7.4中有一些bug,它与在10.7.3中发现的libPNG版本相同。在将图像转换为pngs之前,使用automator脚本将其转换为jpeg似乎是可行的。
https://stackoverflow.com/questions/10664467
复制相似问题