Problemas para enviar imagem por Webservice

2 respostas
F

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!

2 Respostas

mmaico

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!

F

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!

Criado 27 de novembro de 2012
Ultima resposta 28 de nov. de 2012
Respostas 2
Participantes 2