3

OKこれは私が欲しいものです:

  • いくつかNSImage
  • ICNSそれらをファイルに追加します
  • それを保存

これは私がこれまでに行ったことです(純粋にテストとして):

- (CGImageRef)refFromImage:(NSImage*)img
{
    CGImageSourceRef source;

    source = CGImageSourceCreateWithData((CFDataRef)[img TIFFRepresentation], NULL);
    CGImageRef maskRef =  CGImageSourceCreateImageAtIndex(source, 0, NULL);

    return maskRef;
}

- (void)awakeFromNib
{
    NSImage* img1 = [NSImage imageNamed:@"image1"];
    NSImage* img2 = [NSImage imageNamed:@"image2"];

    NSLog(@"%@",img1);
    CGImageRef i1 = [self refFromImage:img1];
    CGImageRef i2 = [self refFromImage:img2];

    NSURL *fileURL = [NSURL fileURLWithPath:[@"~/Documents/final.icns" stringByExpandingTildeInPath]]; 
    CGImageDestinationRef dr = CGImageDestinationCreateWithURL((__bridge CFURLRef)fileURL, kUTTypeAppleICNS , 1, NULL);

    CGImageDestinationAddImage(dr, i1, NULL);
    CGImageDestinationAddImage(dr, i2, NULL);
    /* Even tried adding 'multiple' times

    CGImageDestinationAddImage(dr, i1, NULL);
    CGImageDestinationAddImage(dr, i2, NULL);
    CGImageDestinationAddImage(dr, i1, NULL);
    CGImageDestinationAddImage(dr, i2, NULL);

    */

    CGImageDestinationFinalize(dr);

    CFRelease(dr);
}

しかし、それでもエラーをスローし続けます:

ImageIO:CGImageDestinationFinalize画像の宛先に十分な画像がありません

私のコードの何が問題になっていますか?


私は以下の答えを見てきましたが、それでも何もありません:

4

1 に答える 1

4

IconFamilyを使用できます。

IconFamilyは、Mac OS XCarbonAPIの「アイコンファミリ」データ型用のCocoa/Objective-Cラッパーです。その主な目的は、CocoaアプリケーションがNSImageインスタンスからカスタムファイルアイコンを簡単に作成できるようにすることです。したがって、Mac OS Xの高解像度RGBA「サムネイル」アイコン形式を利用して、ファイルの内容の詳細なサムネイルプレビューを提供します。

NSImage *mImage = [[NSImage alloc] initWithContentsOfFile:@"/Users/Username/Desktop/WhiteTiger.jpg"];
IconFamily *fam = [IconFamily iconFamilyWithThumbnailsOfImage:mImage];    
[fam writeToFile:@"/Users/Username/Desktop/WhiteTiger.icns"];
于 2012-09-07T09:57:39.207 に答える