weex image组件显示合成后的图片

项目中有个功能需要对图片进行合成,所以在ios下自定义了一个图片合成的mudule。由于weex的image组件的src为本地或者远程地址,或者base64编码数据,最后我采用mudule回传base64的方式进行图片显示。
程序写完,图片始终显示不出来,而且weex的modal.toast也不显示我回传的内容。起初以为是mudule回传weex出了问题(是不是weex接收不到我回传的消息),调试后发现weex可以接收到消息,但toast不出我的图片数据(base64),我想是不是我的图片数据太大,就找了一个小点的图片通过第三方工具得到base64数据,通过在mudule回传那里写死,weex中的toast依然不显示,但image组件将图片显示出来了。此时我想问题应该在base64编码那里。

    NSData *data = UIImagePNGRepresentation([UIImage imageNamed:@"background.png"]);
    NSString *encodedImageStr = [data  base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
    
    NSData *ImageData = [[NSData alloc] initWithBase64EncodedString:encodedImageStr options:NSDataBase64DecodingIgnoreUnknownCharacters];
    UIImage *testImage = [UIImage imageWithData:ImageData];
    
    self.imageView.image = testImage;

在ios平台,通过把图片base64后,再转换回来,图片是可以正常显示的。那问题出在哪里了?最终我进行尝试,图片终于在weex的image组件中显示出来了。

应该使用 base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed
        NSData *data = UIImagePNGRepresentation(image);
        NSString *encodedImageStr = [data  base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
        NSMutableDictionary * callbackRsp = [[NSMutableDictionary alloc] initWithCapacity:0];
        NSString * imageBase64 = [NSString stringWithFormat:@"data:image/png;base64,%@",encodedImageStr];
        [callbackRsp setObject:imageBase64 forKey:@"image"];
        callback(callbackRsp, false);

遗留问题:我没有搞清楚 NSDataBase64Encoding64CharacterLineLength NSDataBase64EncodingEndLineWithLineFeed 区别在哪里。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    爱运动爱学习阅读 15,357评论 3 114
  • 云儿09阅读 61评论 0 0
  • 诗歌对我而言 就是渴望与恋人相见 沐浴皎洁月光 一起走过稻田 看繁星点点 听蛙声一片 诗歌对我而言 就是星光把黑夜...
    香自苦寒阅读 363评论 2 10
  • 今日,在这个世界上的一群人在成双成对的庆祝着,“今天是我们相爱的第…年”很幸福的炫耀着 我看到有人收到玫瑰,我也看...
    R_T_reborn阅读 120评论 0 1
  • 我爱海但我不能跳海 不是所有的感情都尽如人意
    七女_阅读 73评论 0 0
  • 我不知道 是否 真的爱你 如果不爱着 为什么 会有莫名的失落感 为什么 会有心痛的难受 如果不爱 为什么 记忆没有...
    假执著阅读 112评论 0 0