2011-08-25 2 views

답변

2
UIImage *img = ...; 
CGFloat quality = 0.85; 
NSData *jpegdata = UIImageJPEGRepresentation(img,quality); 

또는

다음
NSData *pngdata = UIImagePNGRepresentation(img); 
0

아이폰 OS가 바이트에있는 UIImage로 변환하기위한 간단한 기능입니다 배열 ->

+ (unsigned char*)UIImageToByteArray:(UIImage*)image; { 

    unsigned char *imageData = (unsigned char*)(malloc(4*image.size.width*image.size.height)); 

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 

    CGImageRef imageRef = [image CGImage]; 
    CGContextRef bitmap = CGBitmapContextCreate(imageData, 
               image.size.width, 
               image.size.height, 
               8, 
               image.size.width*4, 
               colorSpace, 
               kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); 

    CGContextDrawImage(bitmap, CGRectMake(0, 0, image.size.width, image.size.height), imageRef); 

    CGContextRelease(bitmap); 
    CGImageRelease(imageRef); 
    CGColorSpaceRelease(colorSpace); 

    return imageData; 
} 

일단 바이트 배열 데이터가 있으면 base64 인코딩 알고리즘을 쉽게 구현할 수 있으며 위키 백과에서 읽을 수 있습니다. base64로 인코딩하는 더 쉬운 방법이 있을지도 모릅니다. 확실하지 않습니다. http://en.wikipedia.org/wiki/Base64

+0

이는 여러 가지 이유로 비효율적입니다. UIImagePNGRepresentation이 훨씬 좋습니다. –

+0

그러나 이미지는 JPEG 데이터로 메모리에 보관되지 않습니다. 'CGContextDrawImage'를 사용하면 BMP를 그립니다. –

+0

난 그냥 UIImage에서 바이트 배열로 변환하는 방법을 제공하려고했다. 느려지지만 서버에 데이터를 보내기 전에 데이터를 수정하기를 원할 경우를 대비하여. –

관련 문제