来自的NSString举行字节的UIImage(UIImage from bytes held in

2019-07-29 21:17发布

我试图创建,实际上是一个的NSString内举行的字节数组一个UIImage。

有人可以告诉我,我该怎么办呢?

以下是我在想这样做的:

NSString *sourceString = @"mYActualBytesAREinHERe=";
//get the bytes
const char *bytesArray = [sourceString cStringUsingEncoding:NSASCIIStringEncoding];
//build the NSData object
NSData *data = [NSData dataWithBytes:bytesArray length:[sourceString length]];
//create actual image
UIImage *image = [UIImage imageWithData:data];

问题是, 图像总是为0x0(无)。

任何建议,将不胜感激。

谢谢!

Answer 1:

为了将图像转换为字符串,你需要一种方法来转换NSData (大量的例子来一个base64Encoded串并返回这里 )。 最简单的人使用的是类上NSData这样你就可以做这样的事情:

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

去你需要一个反向转换器的其他方式:

UIImage* image = [UIImage imageWithData:[NSData 
            dataFromBase64EncodedString: pictureDataString]];


Answer 2:

[UIImage imageWithData:data]; 将返回nil,如果它不理解传递给它的数据。 我会仔细检查你的编码等,这是奇怪的是二进制字符串将举行纯净的图像数据没有某种编码的(Base64等)。 字符串编码和二进制编码是不兼容的。



Answer 3:

我敢打赌,在那里,你的图像数据有一些空字符(0×00),当你知道这是该字符串的结束符,所以当你问C字符串,你可能会得到这样的双向数据太少。

试着这么做 - (NSData的*)dataUsingEncoding:(NSStringEncoding)编码; 生成您的NSData。

如果不工作,你需要评估是否设定数据放入一个NSString(使用嵌入的空字符)不会导致数据的丢失过多。

像其他受访者之一,或许是基于64位编码的数据将是一个好主意(如果使用字符串来传输数据的IMG是一个要求)

祝好运。



文章来源: UIImage from bytes held in NSString