Преобразование html-файла с изображениями в формате base64 в doc

Я пытаюсь прочитать файл с помощью буферизованного ридера.

String totalStr = "";
while ((s = br.readLine()) != null) {
    totalStr += s + "\n";
}

Когда s состоит из образа base64, строка обрезается наполовину, также я не могу добавить остальное содержимое файлов в totalstr.

Как я могу обрабатывать строку изображения base64, поскольку она состоит из специальных символов?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
910
1

Ответы 1

Сначала я предлагаю не использовать метод readLine (), так как этот метод может читать больше черных символов или дополнительных кодировок.

Если вы хотите только преобразовать изображение с base64 в String:

Следующий класс включает два метода: Преобразует изображение в строку Base64 и декодирует его

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class ImageToBase64 {

    public static String GetImageStr(String imgFile) {
        // Convert the image file to byte array, and do Base64 encoding
        InputStream in = null;
        byte[] data = null;
        // Read Image Data Array
        try {
            in = new FileInputStream(imgFile);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // Base64 Encoding
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);// Return the string encoded by Base64
    }

    public static boolean GenerateImage(String base64str, String savepath) { 
        // Decoding the string and generate the image
        if (base64str == null) 
            return false;
        System.out.println("Decoding Start...");
        BASE64Decoder decoder = new BASE64Decoder();
        try {
            // Base64 Decoding
            byte[] b = decoder.decodeBuffer(base64str);
            System.out.println("Decoding End...");
            for (int i = 0; i < b.length; ++i) {
                if (b[i] < 0) {
                    b[i] += 256;
                }
            }
            System.out.println("Start Generating Image");
            // Gen the jpeg image
            OutputStream out = new FileOutputStream(savepath);
            out.write(b);
            out.flush();
            out.close();
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    public static void main(String[] args) {
        String image  = GetImageStr("C:/Users/Perspectivar/Downloads/001.jpg");

        System.out.println(image);
        GenerateImage(image,"C:/Users/Perspectivar/Desktop/SYZ01.jpg");
    }

}

Другие вопросы по теме