图片转base64位和web在线转64位的编码不一样
在image转base64时,得到的字符串和网页上在线转的不一样
- (NSString *)imageToString:(UIImage *)image { NSData *imageData = UIImageJPEGRepresentation(image,1.0f); NSString *image64 = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; return [NSString stringWithFormat:@"data:image/jpeg;base64,%@",image64]; }
原因1: image在转data的时候,会对数据做加工
原因2:NSDataBase64Encoding64CharacterLineLength不对
- NSDataBase64Encoding64CharacterLineLength:每64个字符插入\r或\n
- NSDataBase64Encoding76CharacterLineLength:每76个字符插入\r或\n,标准中有要求是76个字符要换行,不过具体还是自己定
- NSDataBase64EncodingEndLineWithCarriageReturn:插入字符为\r
- NSDataBase64EncodingEndLineWithLineFeed:插入字符为\n
- 选项为0,则代表不插入字符
所以为保持和web转码一致,代码应该改为
- (NSString *)imageToString:(UIImage *)image { NSData *imageData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"test.jpg" ofType:nil]]; NSString *image64 = [imageData base64EncodedStringWithOptions:0]; return [NSString stringWithFormat:@"data:image/jpeg;base64,%@",image64]; }
浙公网安备 33010602011771号