此代码(source
是NSMutableArray
与NSImage
对象:ImageIO的错误时创建文件ICNS
NSURL *fileURL = [NSURL fileURLWithPath:aPath]; CGImageDestinationRef dr = CGImageDestinationCreateWithURL((CFURLRef)fileURL, kUTTypeAppleICNS, 1, NULL); for (NSImage *img in source) { NSLog(@"%@",img); CGImageRef i1 = [img CGImageForProposedRect:NULL context:nil hints:nil]; CGImageDestinationAddImage(dr, i1, NULL); } CGImageDestinationFinalize(dr); CFRelease(dr);
导致下面的输出:
2012-12-26 13: 48:57.682 Eicon [1131:1b0f] | NSImage 0x1025233b0 Size = {11.52,11.52} Reps =( “NSBitmapImageRep 0x10421fc30 Size = {11.52,11.52} ColorSpace =(尚未加载)BPS = 8 BPP = (尚未加载)像素= 1024×1024阿尔法= NO平面= NO格式=(尚未加载)CurrentBacking =零(断层)CGImageSource = 0x104221170"
(...)< - 这里的其他NSImage中实例记录。
ImageIO:| ERROR | CGImageDestinationFinalize图像目标没有足够的图像
任何想法,为什么它,并在最后的错误结束? (顺便说一句,我想过使用IconFamily,但它使用的很多方法已被弃用)。
编辑:也许它会是提到我用它来生成图像的代码更重要的是,我不会感到惊讶,如果该代码有问题(我是小白):
// Get images
[source removeAllObjects];
NSSize sizes[10];
sizes[0] = NSMakeSize(1024,1024);
sizes[1] = NSMakeSize(512,512);
sizes[2] = NSMakeSize(512,512);
sizes[3] = NSMakeSize(256,256);
sizes[4] = NSMakeSize(256,256);
sizes[5] = NSMakeSize(128,128);
sizes[6] = NSMakeSize(64,64);
sizes[7] = NSMakeSize(32,32);
sizes[8] = NSMakeSize(32,32);
sizes[9] = NSMakeSize(16,16);
for (int i=0 ; i<10 ; i++) {
if ([[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:@"Size%i",i+1]]) {
NSBitmapImageRep *srcimg = [[NSBitmapImageRep alloc] initWithData:[NSData dataWithContentsOfFile:aFile]];
[srcimg setPixelsHigh:sizes[i].height];
[srcimg setPixelsWide:sizes[i].width];
NSImage *newimg = [[NSImage alloc] initWithSize:NSZeroSize];
[newimg addRepresentation:srcimg];
if (![newimg isValid]) {
[delegate error:@"Invalid file."];
}
else [source addObject:newimg];
}
}
如果你记录你的CGImageRef怎么办? – JWWalker
'-refFromImage:'做什么?它是否返回非零? – paulmelnikow
请编辑您的问题以包含您的'refFromImage:'代码。 –