【问题标题】:Change UIImage Class to send to node.js server in iOS?更改 UIImage 类以发送到 iOS 中的 node.js 服务器?
【发布时间】:2016-03-07 18:48:27
【问题描述】:

我正在创建一个聊天应用程序。现在我想以 JSON 字符串将 UIImage 发送到服务器,以便其他用户可以接收图像。我正在使用 socket.io,所以我必须使用数据(JSON 字符串)发送事件。

问题- 当我尝试将 UIImage 转换为 NSData 并将其转换为 JSON 时,它会给出错误 'Invalid type in JSON write (NSConcreteMutableData)'

将 UIImage 发送到服务器的正确方法是什么?

代码

NSData *imgData = UIImageJPEGRepresentation(image, .2);
NSString * imageString =[[NSString alloc]initWithBytes:[imageData bytes] length:[imageData length] encoding:NSASCIIStringEncoding];

也试过

NSString * imageString =[[NSString alloc]initWithData :imgData encoding:NSUTF8StringEncoding];

将数据转换为字典:

NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:imgData options:NSJSONReadingAllowFragments error:&error];

任何帮助将不胜感激。

【问题讨论】:

    标签: ios objective-c json node.js uiimage


    【解决方案1】:

    一般方法是对图像数据进行 base64 编码。这样图像数据就被转换成字符串格式而不是二进制格式了。

    从 iOS 7 开始,NSData 提供了 base64 转换方法,您可以使用这些方法代替当前尝试的字符串之间的转换。

    【讨论】:

    • 我用过 [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];但它正在创建超过 5000 个字母的巨大字符串
    • 要么接受它并处理大小,要么采取不同的方法上传文件,将图像分割成图块,减小图像大小......
    猜你喜欢
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    相关资源
    最近更新 更多