2016-12-23 2 views
0

У меня есть base64 String, который я хочу преобразовать обратно к изображению, независимо от формата изображения на стороне сервера. Я попробовал это, используя следующий код, изображение создается, но когда я пытаюсь его просмотреть, показ ошибки не может загрузить изображение.Преобразование base64 строки в изображение на стороне сервера в java

public void convertStringToImage(String base64) { 
     try { 
      byte[] imageByteArray = decodeImage(base64); 

      FileOutputStream imageOutFile = new FileOutputStream("./src/main/resources/demo.jpg"); 
      imageOutFile.write(imageByteArray); 
      imageOutFile.close(); 
     } catch (Exception e) { 
      logger.log(Level.SEVERE, "ImageStoreManager::convertStringToImage()" + e); 
     } 
    } 


    public static byte[] decodeImage(String imageDataString) { 
     return Base64.decodeBase64(imageDataString); 
    } 

Что я должен делать, чтобы мое изображение выглядело правильно?

+1

Ну вы смотрели на файл, который был создан? Как долго он сравнивается с базой64? Как вы подтвердили правильность начала base64? –

+0

Ваш код должен делать трюк. Проблема должна быть в другом месте. –

+0

Вы уверены, что ваше изображение - это jpg, а не gif, png или что-то еще? –

ответ

1

Ваш код выглядит нормально. Я могу предложить, однако, еще несколько отладочных шагов для вас.

  1. Кодируйте файл вручную, используя, например, это webpage
  2. Сравнить если String base64 содержит точно такое же содержание, как вы получили увидеть на этой странице. // если что-то не так, ваш запрос поврежден, возможно, некоторые проблемы с кодировкой на стороне интерфейса?
  3. См содержание файла, созданного в соответствии с ./src/main/resources/demo.jpg и сравнить содержание (размер, бинарное сравнение) // если что-то здесь не так вы будете знать, что на самом деле операция сохранения сломана

Примечания:

  • Пробовали ли вы сделать .flush() перед закрытием?
  • Ваш код в нынешнем виде может привести к утечке ресурсов, посмотрите на try-with-resources
0

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

public static byte[] decodeImage(String imageDataString) { 
    return org.apache.commons.codec.binary.Base64.decodeBase64(imageDataString.getBytes()); 
}