Как преобразовать штрих-код, сгенерированный через barcode4j, в базу 64 в Java - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь преобразовать изображение штрих-кода, сгенерированное с помощью barcode4j, но не могу этого сделать.Когда я использую FileOutputStream для генерации изображения по локальному пути, он работает как положено.но при использовании ByteArrayOutputStream для преобразования его в строку base64 я ничего не получаю .. Что-то не так с моим кодом?

public void testNothing() throws FileNotFoundException, UnsupportedEncodingException{
    Code39Bean bean = new Code39Bean();
    int resolution = 150;

    bean.setModuleWidth(UnitConv.in2mm(1.0f / resolution)); //makes the narrow bar

    bean.setWideFactor(3);
    bean.doQuietZone(false);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    try {

     BitmapCanvasProvider canvas = new BitmapCanvasProvider(
             out, "image/x-png", resolution, BufferedImage.TYPE_BYTE_BINARY, false, 0);
     bean.generateBarcode(canvas, "1234");
     System.out.println("Generating Base64");
    // Base64Encoder encode= new Base64Encoder();

     String imgString = new String(Base64Encoder.encode(out.toByteArray()));
     System.out.println("String Generated :"+ imgString);
     try {
        out.close();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

     try {
        canvas.finish();
    } catch (IOException e) {

        e.printStackTrace();
    }
    } finally {
     try {
        out.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
}

OUTPUT

Generating Base64
String Generated :

Ответы [ 2 ]

0 голосов
/ 15 августа 2018

Вам нужно закончить холст перед вызовом: out.toByteArray().Это очистит ваш штрих-код в OutputStream.

0 голосов
/ 29 мая 2018

Ваша проблема в этой строке:

String imgString = new String(Base64Encoder.encode(out.toByteArray()));

out.toByteArray () выведет байты, которые вы написали перед использованием out.write ()

, вы, вероятно, хотите это:

byte[] img = //canvas get bytes
String imgString = Base64.getEncoder().encodeToString(img);
...