3

내 iPhone 앱에서 tif 유형의 매개 변수로 일부 API를 호출하기 위해 UIImage를 tiff/tif 파일로 변환해야합니다. 그래서 아이폰 사진 라이브러리에서 UIImage를 가져 오거나 카메라에서 사진을 찍기로되어 있습니다. 이 변환 (UIImage에서 tif/tiff 로의 변환)이 가능한지 그리고 가능하다면 가장 좋은 방법은 무엇인지 알려 주시기 바랍니다. 미리 감사드립니다.UIImage를 tiff/tif 파일로 변환

답변

0

ImageMagick은 iOS에서 실행되며 청구서에 적합합니다. 그러나 API에 액세스 할 수 있다고 가정하고 API 수정을 고려할 것입니다. 대다수의 이미지가 이미 특정 형식으로되어 있고 변환되어야하는 경우 고객에게 많은 대기 시간이 소요됩니다. API가 여러 형식으로 이미지와 상호 작용할 수 있다면 많은 사람들에게 약간의 시간을 절약 할 수 있습니다.

0

UIImage은 이미지 파일 형식이 아닙니다. iOS가 이미지를 표시하는 방법 일뿐입니다. 그것은 귀하의 휴대 전화 어딘가에서 이미지를 소요하고 그들을 화면에 둡니다. 해당 이미지 형식이 무엇이든 관계없이 UIImage은 해당 파일 형식 표시를 지원하기 때문에 tiff로 변환 할 수 있습니다.

tiff 메서드에는 네이티브 UIImage이 없지만 UIImagePNGRepresentation 또는 UIImageJPEGRepresentation을 사용할 수 있습니다.

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];