UIImage к байтовому массиву - PullRequest
       23

UIImage к байтовому массиву

5 голосов
/ 03 сентября 2011

Я создаю приложение, которое загружает изображение на сервер. Он должен отправить байтовый массив в XML. Как получить байтовый массив в строку NSString?

Спасибо!

Ответы [ 3 ]

6 голосов
/ 03 сентября 2011

Вы можете преобразовать UIImage в объект NSData, а затем извлечь оттуда массив байтов. Вот пример кода:

UIImage *image = [UIImage imageNamed:@"image.png"];
NSString *byteArray = [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

Если вы используете изображение PNG, вы можете использовать функцию UIImagePNGRepresentation , как показано выше, или если вы используете изображение JPEG, вы можете использовать функцию UIImageJPEGRepresentation . Документация доступна по UIImage Class Reference

4 голосов
/ 22 октября 2013

Вот простая функция для iOS, чтобы преобразовать из UIImage в массив без байтов char * byte ->

+ (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);
    CGColorSpaceRelease( colorSpace);

    return imageData;
}
0 голосов
/ 05 января 2012

используя NSData *data = UIImagePNGRepresentation(image); вы можете конвертировать изображение в данные, теперь конвертируйте данные в байты, используя getBytes:length: или getBytes:range:

...