P.J*_*P.J 3 iphone image bytearray objective-c ios
我有一个帖子Web服务,我需要在字节数组中发送图像,因为我需要以JSON格式发送post参数,我已经创建了它NSDictionary
.我的问题是如何将对象分配给字典中的键Byte
,我尝试这样做,应用程序在创建时崩溃NSDictionary
.我也用代码解释每个步骤,以便于理解下面的问题: -
这是我将图像转换为字节格式的代码: -
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSUInteger len = [data bytes];
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, [data bytes], len);
Run Code Online (Sandbox Code Playgroud)
所以,现在我Byte
在字节数组中包含图像,现在我想将此对象分配给NSDictionary
.这是代码,
NSDictionary *dictJson = [NSDictionary dictionaryWithObjectsAndKeys:
byteData, @"photo",
nil];
Run Code Online (Sandbox Code Playgroud)
现在我的应用程序崩溃在我正在创建dictJson
对象的上面一行,有什么方法可以将Byte传递给它NSDictionary
?
另外,另一个问题,我该怎么NSLog
byteData
办?
请帮我.
提前致谢!
如果你真的想将图像数据作为包含字节作为数字的JSON数组发送,那么你必须"手动"创建数组,没有内置函数:
NSData *data = ... // your image data
const unsigned char *bytes = [data bytes]; // no need to copy the data
NSUInteger length = [data length];
NSMutableArray *byteArray = [NSMutableArray array];
for (NSUInteger i = 0; i < length; i++) {
[byteArray addObject:[NSNumber numberWithUnsignedChar:bytes[i]]];
}
NSDictionary *dictJson = [NSDictionary dictionaryWithObjectsAndKeys:
byteArray, @"photo",
nil];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictJson options:0 error:NULL];
Run Code Online (Sandbox Code Playgroud)
然后JSON数据看起来像
{"photo":[byte0, byte1, byte2, ...]}
Run Code Online (Sandbox Code Playgroud)
所以也许这就是服务器所期望的.但请注意,这是一种非常无效的(在空间方面)发送图像数据的方式(例如与Base64相比).
归档时间: |
|
查看次数: |
5382 次 |
最近记录: |