我试图创建,实际上是一个的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等)。 字符串编码和二进制编码是不兼容的。
我敢打赌,在那里,你的图像数据有一些空字符(0×00),当你知道这是该字符串的结束符,所以当你问C字符串,你可能会得到这样的双向数据太少。
试着这么做 - (NSData的*)dataUsingEncoding:(NSStringEncoding)编码; 生成您的NSData。
如果不工作,你需要评估是否设定数据放入一个NSString(使用嵌入的空字符)不会导致数据的丢失过多。
像其他受访者之一,或许是基于64位编码的数据将是一个好主意(如果使用字符串来传输数据的IMG是一个要求)
祝好运。