5

I'm creating an app that uploads an image to a server. It must send the byte array on a XML. How do I get the byte array into a NSString?

Thanks!

3 Answers 3

6

You can convert the UIImage to a NSData object and then extract the byte array from there. Here is some sample code:

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

If you are using a PNG Image you can use the UIImagePNGRepresentation function as shown above or if you are using a JPEG Image, you can use the UIImageJPEGRepresentation function. Documentation is available on the UIImage Class Reference

Sign up to request clarification or add additional context in comments.

1 Comment

This was very helpful to me. Thank you, Suhail, for your post.
5

Here is a simple function for iOS to convert from UIImage to unsigned char* byte array -->

+ (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;
}

Comments

0

using NSData *data = UIImagePNGRepresentation(image); you can convert image into data , now convert dat to bytes by using getBytes:length: or getBytes:range:

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.