将UIImage转换为tiff / tif文件

时间:2012-08-15 13:05:13

标签: objective-c uiimage uiimagepickercontroller tiff image-conversion

在我的iPhone应用程序中,我需要将UIImage转换为tiff / tif文件,以便使用tif类型的参数调用某些API。所以我应该从iphone照片库获取UIImage或从相机拍照。请告诉我这种转换(UIImage to tif / tiff)是否可行,如果可能的话,最好的方法是什么。提前谢谢。

3 个答案:

答案 0 :(得分:1)

NSLog(@"I am using MagicWand Library");
//GIT path https://github.com/marforic/imagemagick_lib_iphone

MagickWandGenesis();
magick_wand = NewMagickWand();
MagickSetFormat(magick_wand, "tiff");
//NSData * dataObject = UIImagePNGRepresentation([UIImage imageNamed:@"daftpunk.jpg"]);
NSData * dataObject = UIImageJPEGRepresentation([UIImage imageNamed:@"daftpunk.jpg"], 1.0);
//UIImageJPEGRepresentation([imageViewButton imageForState:UIControlStateNormal], 90);
MagickBooleanType status;
status = MagickReadImageBlob(magick_wand, [dataObject bytes], [dataObject length]);
if (status == MagickFalse) {
    ThrowWandException(magick_wand);
}

size_t my_size;
unsigned char * my_image = MagickGetImageBlob(magick_wand, &my_size);
NSData * data = [[NSData alloc] initWithBytes:my_image length:my_size];
free(my_image);
magick_wand = DestroyMagickWand(magick_wand);
MagickWandTerminus();
UIImage * image = [[UIImage alloc] initWithData:data];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"DAFTPUNK.tif"]; //Add the file name
[data writeToFile:filePath atomically:YES];

[imageViewButton setImage:image forState:UIControlStateNormal];

答案 1 :(得分:0)

ImageMagick在iOS上运行,似乎符合要求。但是,我会考虑修改API,假设您可以访问它。如果大多数图像已经采用某种格式并且必须进行转换,那么您的客户需要等待很长时间。如果您的API可以与多种格式的图像进行交互,那么您可以为许多人节省一些时间。

答案 2 :(得分:0)

UIImage不是一种图像文件格式;这只是iOS显示图像的一种方式。它会从手机上的某个位置拍摄图像并将其放在屏幕上。无论这些图像的格式如何,都可能将它们转换为tiff,因为UIImage支持显示该文件类型。

tiff方法没有原生UIImage,但您可以UIImagePNGRepresentationUIImageJPEGRepresentation