UIImage from bytes held in NSString

前端 未结 3 1017
悲&欢浪女
悲&欢浪女 2021-02-04 21:23

I am trying to create a UIImage from a byte array that is actually held within a NSString.

Can someone please tell me how I can do that?

Here is what I was think

相关标签:
3条回答
  • 2021-02-04 21:39

    [UIImage imageWithData:data]; will return nil if it doesn't understand the data being passed to it. I would double check your encoding, etc. It's odd that a binary string would hold pure image data without some kind of encoding (base64, etc.). String encodings and binary encodings aren't compatible.

    0 讨论(0)
  • 2021-02-04 21:41

    I bet your image data has some null characters in there (0x00) and as you know that is the terminator for the string, so when you ask for the C string, you probably get way-way too little data.

    Try something like - (NSData *)dataUsingEncoding:(NSStringEncoding)encoding; to generate your NSData.

    If that doesn't work you need to evaluate whether the setting the data into an NSString (with embedded null chars) isn't causing a loss of data too.

    Like one of the other respondents, perhaps base-64 encoding your data would be a good idea (if using a string to transport the img data is a requirement)

    Good luck.

    0 讨论(0)
  • 2021-02-04 21:46

    To convert an image to string you need a method to convert NSData to a base64Encoded string and back (lots of examples here). The easiest ones to use are categories on NSData so you can do something like this:

    UIImage* pic = [UIImage imageNamed:@"sample.png"];
    NSData* pictureData = UIImagePNGRepresentation(pic);
    NSString* pictureDataString = [pictureData base64Encoding];
    

    To go the other way you need a reverse converter:

    UIImage* image = [UIImage imageWithData:[NSData 
                dataFromBase64EncodedString: pictureDataString]];
    
    0 讨论(0)
提交回复
热议问题