Получить фотошоп, чтобы прочитать мой многослойный CGImageRef TIFF

Фотошоп меня сильно смущает.

Я могу создать многослойное изображение tif из фотошопа и прочитать его в моей программе (сборка какао)

Я могу создать многослойный TIF в моей программе и прочитать его с помощью Tiffutil.

Фотошоп, однако, не распознает мой файл как многослойный 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];

0 ответов

Другие вопросы по тегам