Nano Hash - криптовалюты, майнинг, программирование

Преобразование строки в кодировке Base64 в файл изображения обратно на Java Server

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

    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); 
16.03.2012

  • ошибка а) вы не опубликовали сообщение об ошибке. б) проверьте, можете ли вы сохранить вывод Base64.decode() в виде файла и открыть его с помощью любого средства просмотра изображений / сравнить с вашими исходными данными. 16.03.2012

Ответы:


1

Попробуй это

        byte[] imageBytes=Base64.decode(imageString,Base64.NO_WRAP);
        InputStream in = new ByteArrayInputStream(imageBytes);
        Bitmap b = BitmapFactory.decodeStream(in);
01.05.2012

2

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

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

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

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

16.03.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..