Преобразование строки, закодированной в Base64, в файл изображения на сервере Java - PullRequest
2 голосов
/ 16 марта 2012

Я хочу отправить изображение с Android на сервер. Я расшифровал изображение в Base64 String и отправил его на сервер. Я использую следующий код для преобразования изображения в строку

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon);  
    ByteArrayOutputStream bao = new ByteArrayOutputStream();  
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao);  
    byte [] byteArray = bao.toByteArray();  
    String imageToString=Base64.encodeToString(byteArray,Base64.DEFAULT);  
    return imageToString; 

Теперь я не могу преобразовать его обратно в изображение на стороне сервера. Я попробовал это

   byte[] imageBytes=Base64.decode(imageString);  
   InputStream in =  new ByteArrayInputStream(imageBytes);  
   BufferedImage bImageFromConvert = ImageIO.read(in);  
   ImageIO.write(bImageFromConvert, "jpg", new File("D:\\myImage.jpg")); 

я получаю определение таблицы Фальшивого Хаффмана исключение и иногда im = null исключение. Скажите, пожалуйста, какую ошибку я делаю

Редактировать: сообщение об ошибке javax.imageio.IIOException: ложное определение таблицы Хаффмана в этой строке

  BufferedImage bImageFromConvert = ImageIO.read(in); 

Ответы [ 2 ]

2 голосов
/ 01 мая 2012

Попробуйте это

        byte[] imageBytes=Base64.decode(imageString,Base64.NO_WRAP);
        InputStream in = new ByteArrayInputStream(imageBytes);
        Bitmap b = BitmapFactory.decodeStream(in);
1 голос
/ 16 марта 2012

Ну, здесь может быть несколько проблем.Первое, что я думаю, это то, что вы конвертируете байты изображения в String (кодируя их в любой кодировке по умолчанию, используемой в среде Android) и декодируете эту String обратно в байты, не гарантируя, что вы используете ту же кодировку текста (и таким образом получаетете же байты).

Почему бы не отправить байты напрямую?Или, что еще лучше, просто загрузите файл напрямую через форму HTTP, состоящую из нескольких частей.Здесь есть учебник:

http://flo.dauran.com/194-android-uploader-une-image-sur-une-serveur-web/

(на французском, но есть подробные примеры кода)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...