Photoshop让我很困惑。
我能够从 Photoshop 创建多层 tif 图像并将其读入我的程序(可可构建)
我可以在我的程序中创建一个多层 tif 并让 tiffutil 读取它。
但是,photoshop 不会将我的文件识别为多层 tif。只有第一张图片进来。
我需要包含哪些信息?我该怎么做呢?当我写出 gif (kUTTypeGIF) 而不是 tif (kUTTypeTIFF) 时,一切都很好。
这里有一些代码来展示我在做什么......(使用 Xcode 4.1 CoreFoundation)下面的代码应该采用 3 个 JPEG 图像并创建单独的层,写出一个多层 tiff 文件。它适用于 GIF,但不适用于 TIFF
// create CFURLRef for 3 separate images.
NSString *filePath1 = [[NSBundle mainBundle] pathForResource:@"1image" ofType:@"jpg"];
CFURLRef url1 = (CFURLRef)[NSURL fileURLWithPath:filePath1];
NSString *filePath2 = [[NSBundle mainBundle] pathForResource:@"2image" ofType:@"jpg"];
CFURLRef url2 = (CFURLRef)[NSURL fileURLWithPath:filePath2];
NSString *filePath3 = [[NSBundle mainBundle] pathForResource:@"3image" ofType:@"jpg"];
CFURLRef url3 = (CFURLRef)[NSURL fileURLWithPath:filePath3];
// setup to write to data object
NSMutableData * finalImageData = [NSMutableData data];
CGImageSourceRef imageSourceRef = nil;
// this one does not work
CGImageDestinationRef imageDestRef = CGImageDestinationCreateWithData((CFMutableDataRef)finalImageData, kUTTypeTIFF, 3, nil);
// This one works
// CGImageDestinationRef imageDestRef = CGImageDestinationCreateWithData((CFMutableDataRef)finalImageData, kUTTypeGIF, 3, nil);
// build the final image
imageSourceRef = CGImageSourceCreateWithURL(url1, nil);
CGImageDestinationAddImageFromSource(imageDestRef, imageSourceRef, 0, nil);
imageSourceRef = CGImageSourceCreateWithURL(url2, nil);
CGImageDestinationAddImageFromSource(imageDestRef, imageSourceRef, 0, nil);
imageSourceRef = CGImageSourceCreateWithURL(url3, nil);
CGImageDestinationAddImageFromSource(imageDestRef, imageSourceRef, 0, nil);
CGImageDestinationFinalize(imageDestRef);
CFRelease(imageDestRef);
CFRelease(imageSourceRef);
// write out the final image data
[finalImageData writeToFile:@"outfile.tif" atomically:YES];
// [finalImageData writeToFile:@"outfile.gif" atomically:YES];