Ho un widget di immagini per il caricamento di foto in un'app iOS che sto eseguendo il porting su Android. I dati vengono inviati come POST HTTP nel formato multipart/form-data. Devo replicare questo in Android ma sto avendo alcuni problemi.Equivalente Android a UIImageJPEGRappresentazione?
Codice esistente iOS frammento:
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];
}
Su Android Sto cercando:
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);
la stringa risultante è diversa per la stessa immagine su entrambe le piattaforme tuttavia, il risultato è che l'Android l'immagine non viene visualizzata sul lato server dopo il caricamento.
Qual è l'equivalente di Android/Java a UIImageJPEGRepresentation per convertire un'immagine in un array di byte contenente un'immagine con codifica jpeg?
Non aspettatevi rappresentazioni JPEG riproducibili, c'è un po 'di variabilità anche con tassi di compressione identici. L'altra differenza che noto è che stai inviando i dati come byte non elaborati nel caso iOS, ma inviandolo Base 64 codificato nel caso Android. Stai impostando l'intestazione Content-Encoding in modo appropriato su Android? –
Sto inviando un'intestazione Content-Type: image/jpeg, ma al momento non sto impostando Content-Transfer-Encoding. Il team che gestisce il servizio web su cui stiamo caricando ha confermato che sta ricevendo la stringa di immagini e la sta memorizzando nel database alla fine. – Shane
Ma senza impostare il tipo di codifica, probabilmente non decodificano il 64 di base in un'immagine jpg valida. –