3

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

4

3 回答 3

2
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];
于 2015-05-22T07:02:43.427 回答
1

UIImage不是一种图像文件格式;这只是 iOS 显示图像的一种方式。它从手机上的某个地方获取图像并将它们放在屏幕上。无论这些图像采用何种格式,您都可以将它们转换为 tiff,因为UIImage支持显示该文件类型。

tiff 方法没有原生UIImage方法,但您可以执行UIImagePNGRepresentationor UIImageJPEGRepresentation

于 2012-08-15T13:30:02.813 回答
0

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

于 2012-08-15T13:13:11.177 回答