我正在尝试从TIFF
创建UIImage
图片。我查看了Apple的文档,但找不到任何信息。
有人可以帮我解释如何在iPad上创建TIFF
图片吗?
答案 0 :(得分:11)
在我看来,ImageMagick 方式过度杀戮只是为了写tiff。为什么不建立libtiff?它受iOS支持,是大多数软件包用来编写tiff(包括ImageMagick)的东西。
您甚至可以使用上面ImageMagick链接中的libtiff.a文件。只需将lib和tiff标头安装到您的项目中即可。 编辑:
这是一个nice tutorial,告诉您如何在安装libtiff后编写tiff。 tutorial的第二部分向您展示了如何控制压缩。
答案 1 :(得分:7)
我觉得这个答案有点晚了,但是如果有人想知道如何做到这一点,我想你会发现以下内容会有所帮助:
NSMutableData *mData = [NSMutableData dataWithCapacity:SOME_BIG_NUMBER];
CGImageDestinationRef myImageDest = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)(mData), kUTTypeTIFF, 1, NULL);
CGImageDestinationAddImage(myImageDest,image.CGImage, NULL);
CGImageDestinationFinalize(myImageDest);
CFRelease(myImageDest);
然后mData将保存TIFF文件的NSData编码,然后您可以将其存储到磁盘,上传到服务器,无论...
您可能需要包含MobileCoreServices和ImageIO框架......
保
答案 2 :(得分:3)
ImageMagick已针对iOS编译,允许处理TIFF图像。说明可在此处找到:
http://www.imagemagick.org/script/binary-releases.php?ImageMagick=34s6srn5bll7310o0qo6db5hb3#iOS
还有一个Sample Project说明了如何将此功能集成到您的应用程序中。应该注意的是,包含此库需要几个步骤 - 并且说明包含在上面的链接中。
首先,在名称中使用 libs 下载最新版本(来自上面的第一个链接)。这包括所需框架的预编译版本。解压缩此文件的内容。接下来,右键单击iOS项目中的 Frameworks ,然后选择添加文件选项。添加扩展名为.a的每个文件。你应该有类似的东西:
接下来,您需要添加正确的标题搜索路径。转到项目的“构建设置”并搜索标题搜索路径。选择此选项并添加与包含目录所在位置相对应的新搜索路径(来自下载)。不要仅为调试或发布添加它,而是为所有人添加。你现在应该有这样的东西:
现在,您应该能够包含和使用ImageMagick框架中的代码。
答案 3 :(得分:0)
只需使用以下代码即可获得.tiff image
。您必须将ImageIO
和MobileCoreServices
框架添加到项目中。
#import <ImageIO/ImageIO.h>
#import <MobileCoreServices/UTCoreTypes.h>
- (void)viewDidLoad {
[super viewDidLoad];
[self convertImageIntoTIFF];
}
-(void)convertImageIntoTIFF{
UIImage *img = [UIImage imageNamed:@"image.png"];
float compression = 1.0; // Lossless compression if available.
int orientation = 1; // Origin is at top, left.
CFStringRef myKeys[3];
CFTypeRef myValues[3];
CFDictionaryRef myOptions = NULL;
myKeys[0] = kCGImagePropertyOrientation;
myValues[0] = CFNumberCreate(NULL, kCFNumberIntType, &orientation);
myKeys[1] = kCGImagePropertyHasAlpha;
myValues[1] = kCFBooleanTrue;
myKeys[2] = kCGImageDestinationLossyCompressionQuality;
myValues[2] = CFNumberCreate(NULL, kCFNumberFloatType, &compression);
myOptions = CFDictionaryCreate( NULL, (const void **)myKeys, (const void **)myValues, 3,
&kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSLog(@"documentsDirectory %@", documentsDirectory);
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"image.tiff"];
[self writeCGImage:img.CGImage toURL:[NSURL fileURLWithPath:filePath] withType:kUTTypeTIFF andOptions:myOptions];
}
- (void) writeCGImage: (CGImageRef) image toURL: (NSURL*) url withType: (CFStringRef) imageType andOptions: (CFDictionaryRef) options
{
CGImageDestinationRef myImageDest = CGImageDestinationCreateWithURL((CFURLRef)url, imageType, 1, nil);
CGImageDestinationAddImage(myImageDest, image, options);
CGImageDestinationFinalize(myImageDest);
CFRelease(myImageDest);
}
有关详细信息,您可以下载此DemoCode。
希望,这就是你要找的东西。 :)