我在移植到Android的iOS应用中有一个照片上传图片小部件。数据以multipart / form-data格式作为HTTP POST发送。我需要在Android中复制它,但是遇到了一些问题。
现有的iOS代码段:
if ([[dictionary objectForKey:key] isKindOfClass:[UIImage class]]) {
NSData *imageJPEG = UIImageJPEGRepresentation([dictionary objectForKey:key], 1);
NSString *filename = [NSString stringWithFormat:@"%@.jpg", key];
[(ASIFormDataRequest *)request setData:imageJPEG withFileName:filename andContentType:@"image/jpeg" forKey:key];
}
在Android上我正在尝试:
Bitmap fullImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImageUri);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
fullImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
对于两个平台上的相同图像,结果字符串是不同的,但结果是Android图像在上载后没有在服务器端呈现。
用于将图像转换为包含jpeg编码图像的字节数组的UIImageJPEGRepresentation的Android / Java等价是什么?
答案 0 :(得分:3)
确保将Content-Encoding HTTP标头设置为base64,以便服务器知道将base 64正确解码为有效的jpg。