Estou desenvolvendo um aplicativo no Android em que preciso enviar a imagem para o servidor web. Estou convertendo o array de bytes da imagem para string e tentando enviar a string pelo webservice. O problema é que a string fica muito grande e acredito que isso seja barrado pelo SoapObject na hora do envio, pois fiz testes com um array de bytes menor e funcionou. Alguém saberia alguma solução para contornar esse problema?? há dias estou procurando uma solução. Obrigado!
Olá,
Se você esta com problemas na quantidade de dados enviados você pode transformar sua imagem em string com base64 e comprimir ela usando o GZIPOutputStream do outro lado o Webservice faz o processo inverso usando o GZIPInputStream dessa string e a transforma em imagem novamente.
Como é texto acredito que você terá um bom nivel de compressão!
abraço!
Obrigado pela ajuda amigo.
Entendi perfeitamente a sua dica, eu já estava fazendo a conversão para a base64.
Acabei resolvendo meu problema redimensionando a imagem, o problema estava mesmo no tamaho da string, que com o redimensionamento diminuiu consideravelmente.
public static byte[] ResizeImage(byte[] imagem){
Bitmap bm = BitmapFactory.decodeByteArray(imagem , 0, imagem.length);
int w = bm.getWidth();
int h = bm.getHeight();
int novoW = 200;
int novoH = 200;
//Calcula escala em porcentagem do tamanho original para o novo tamanho
float scalaW = ((float) novoW) / w;
float scalaH = ((float) novoH) / h;
// Criando uma matrix para manipulação da imagem BitMap
Matrix matrix = new Matrix();
// Definindo a proporção da escala para o matrix
matrix.postScale(scalaW, scalaH);
//criando o novo BitMap com o novo tamanho
Bitmap novoBmp = Bitmap.createBitmap(bm, 0, 0, w, h, matrix, true);
return ConvertBitmapToByte(novoBmp);
}
obrigado, abraços!