我正在尝试从实际上保存在 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(零)。

任何建议,将不胜感激。

谢谢!

有帮助吗?

解决方案

要将图像转换为字符串,您需要一个转换方法 NSData 到 base64Encoded 字符串并返回(很多例子 这里)。最容易使用的是类别 NSData 所以你可以做这样的事情:

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

要采用另一种方式,您需要一个反向转换器:

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

其他提示

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

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

尝试像 - (NSData的*)dataUsingEncoding:(NSStringEncoding)编码; 生成您NSData的。

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

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

好运。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top