2011-08-16 2 views
1

Я использую IText создать PDF417 штрих-код, например так:Преобразование IText Штрих изображение формата CCITT в PNG

private InputStream getBarcode() throws Exception {

BarcodePDF417 barcode = new BarcodePDF417(); 
barcode.setText("Sample bar code text"); 

Image image = barcode.getImage(); 
image.scalePercent(50, 50 * barcode.getYHeight()); 

return new ByteArrayInputStream(image.getRawData()); 

}

Мне нужно преобразовать формат CCITT возвращенное barcode.getImage() в любой JPG, GIF , или PNG, поэтому я могу включить его в документ, который я создаю в JasperReports.

ответ

1

Решение, которое я придумал:

private Image getBarcode() throws Exception { 

    BarcodePDF417 barcode = new BarcodePDF417(); 

    barcode.setText("Sample bar code text"); 
    barcode.setAspectRatio(.25f); 

    return barcode.createAwtImage(Color.BLACK, Color.WHITE); 
} 

JasperReports поддерживает java.awt.Image типа для изображений, используемых в отчете.

4

Как насчет чего-то подобного?

BarcodePDF417 barcode = new BarcodePDF417(); 
    barcode.setText("Bla bla"); 
    java.awt.Image img = barcode.createAwtImage(Color.BLACK, Color.WHITE); 
    BufferedImage outImage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB); 
    outImage.getGraphics().drawImage(img, 0, 0, null); 
    ByteArrayOutputStream bytesOut = new ByteArrayOutputStream(); 
    ImageIO.write(outImage, "png", bytesOut); 
    bytesOut.flush(); 
    byte[] pngImageData = bytesOut.toByteArray(); 
    FileOutputStream fos = new FileOutputStream("C://barcode.png"); 
    fos.write(pngImageData); 
    fos.flush(); 
    fos.close(); 
+0

Спасибо, что ответили. Я буду держать ваш образец кода удобным, если мне придется конвертировать изображения в будущем. Оказывается, на этот раз мне не нужно было ничего конвертировать. – Tom

Смежные вопросы