Android로 포팅중인 iOS 앱에 사진 업로드 이미지 위젯이 있습니다. 데이터는 다중 파트/양식 데이터 형식의 HTTP POST로 전송됩니다. 안드로이드에서 이것을 복제해야하지만 몇 가지 문제가 있습니다.Android가 UIImageJPEGRepresentation에 해당합니까?
기존 아이폰 OS 코드 : 안드로이드에
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];
}
내가 노력하고있어 :
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);
결과 문자열은 그러나 두 플랫폼 모두에서 동일한 이미지의 다른는, 결과는 안드로이드 있다는 것을 이미지가 업로드 된 후 서버 측에서 렌더링되지 않습니다.
이미지를 jpeg 인코딩 이미지가 포함 된 바이트 배열로 변환하기위한 Android/Java UIImageJPEG에 대한 설명은 무엇입니까?
JPEG 표현이 재현 될 것으로 기대하지 마십시오. 동일한 압축률을 사용하더라도 상당히 가변적입니다. 다른 차이점은 iOS 케이스에서는 데이터를 원시 바이트로 보내지 만 Android 케이스에서는 Base 64로 인코딩 된 데이터를 보내는 것입니다. Android에서 Content-Encoding 헤더를 적절하게 설정하고 있습니까? –
Content-Type : image/jpeg 헤더를 보내고 있지만 현재 Content-Transfer-Encoding을 설정하지 않았습니다. 업로드중인 웹 서비스를 실행중인 팀이 이미지 문자열을 받고 최종적으로 데이터베이스에 저장하고 있음을 확인했습니다. – Shane
하지만 인코딩 유형을 설정하지 않으면 아마 base-64를 유효한 jpg 이미지로 다시 디코딩하지 않을 것입니다. –