2015-05-29 3 views
1

Привет, Я столкнулся с одной проблемой при генерации штрих-кода в java. Я использовал код 128 для генерации штрих-кода. Данные для генерации длины штрихкода составляют 20 цифр (123456789), я могу сгенерировать штрих-код, а размеры штрих-кода - 165, а ширина - 58. Но мне понадобилось 108 как ширина и 29 как высота для того же 20-значного ввода.Генерация штрих-кода Java

Я использовал код для генерации штрих-кода, пожалуйста, помогите, если у кого-то есть идея в решении проблемы.

package com.tcs.tpos.business.dayactivities; 

import java.awt.Color; 
import java.awt.Font; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.RenderingHints; 
import java.awt.image.BufferedImage; 
import java.io.File; 

import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

import com.onbarcode.barcode.Code128; 



public class barTest { 


    public static void main(String[] args) throws Exception 
    { 



     String barip="1234567890"; 

     File poFile = new File("c:/tmp/work/barcode"+barip+ ".png"); 

     Code128 barcode=new Code128(); 

     barcode.setData(barip); 


     System.out.println("The Barocde height is been refered here " +barcode.getX()); 

     System.out.println("The Barcode width is been refered here " +barcode.getY()); 

     System.out.println("The Barcode width is been refered here " +barcode.getBarcodeHeight()); 


     barcode.setX(0.5f); 

     barcode.setY(15f); 

     barcode.setLeftMargin(0.1f); 

     barcode.setRightMargin(0.1f); 




     System.out.println("The Barcode width is been refered here " +barcode.getBarcodeHeight()); 


     System.out.println("The Barcode width is been refered here " +barcode.getBarcodeWidth()); 

     System.out.println("The Barcode width is been refered here " +barcode.getTopMargin()); 

     System.out.println("The Barcode width is been refered here " +barcode.getBottomMargin()); 

     System.out.println("The Barcode width is been refered here " +barcode.getLeftMargin()); 

     System.out.println("The Barcode width is been refered here " +barcode.getRightMargin()); 





     barcode.drawBarcode("c:/tmp/work/barcode"+barip+ ".png"); 

     ImageIcon oimage=new ImageIcon("c:/tmp/work/barcode"+barip+ ".png"); 


     BufferedImage inputImage=ImageIO.read(poFile); 

     BufferedImage genom=generateomImage(inputImage,113,25);    


     ImageIO.write(genom, "png", new File("c:/tmp/work/barcode"+barip+ ".png")); 



    } 

    public static BufferedImage generateomImage(BufferedImage ret,int width,int height) 
    { 

     int w = ret.getWidth(null); 
     int h = ret.getHeight(null); 
     Image scaledImage = ret.getScaledInstance((int)width, (int)height, Image.SCALE_SMOOTH); 
     BufferedImage result = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); 
     Graphics2D g = result.createGraphics(); 
     g.drawImage(scaledImage, 0, 0, null); 
     g.dispose(); 

     return result; 

    } 

} 
+0

Так что же происходит, если вы сделаете это? –

ответ

1

Вы не должны масштабировать штрих-код в Graphics2D после генерации изображения. Это связано с тем, что изменение масштаба искажает изображение, что может привести к тому, что изображение не сканируется.

Вы должны проверить свой API со своего веб-сайта, у них есть методы установки штрих-кодаWidth и Height.

http://www.onbarcode.com/products/java_barcode/code_128_size_setting.html

Set X, barcodeWidth, LEFTMARGIN и RightMargin для установки ширины кода 128 с Java

barcode.setX(2f); 

    barcode.setbarcodeWidth(200); 

    barcode.setLeftMargin(1f); 

    barcode.setRightMargin(1f); 

Во время установки ширины кода 128 с указанными выше свойствами, вам нужно обратить внимание на то, после того, как вы установите фиксированную ширину штриха (X), в Java-приложениях будет установлена ​​ширина автоматического штрих-кода - минимальная ширина штрих-кода. Однако, если заданное значение barcodeWidth меньше минимальной ширины штрих-кода, созданная ширина изображения Code 128 в Java будет минимальным значением. Если заданный barcodeWith больше минимального, добавочная ширина будет добавлена ​​на правое и левое поля в Java. Set Y, barcodeHeight, TopMargin и bottomMargin установить высоту Code 128 с использованием Java

barcode.setY(75f); 

    barcode.setbarcodeHeight(100f); 

    barcode.setTopMargin(2f); 

    barcode.setBottomMargin(2f); 
+0

Я попытался установить значения по умолчанию как ширину и высоту, для этих значений по умолчанию в качестве ввода, штрих-код, сгенерированный с (165 по ширине и 49 в качестве высоты для 20 цифр в качестве входных данных). –

+0

Есть ли способ генерировать штрих-код в java для размеров 109 по ширине и 29 в качестве высоты для 20-ти цифр как Input. Я пробовал с кодом 128 свой порождающий штрих-код для 165 как ширину. Помимо кода 128 присутствует какой-либо другой способ? –

+0

Проблема заключается в «перемасштабировании». Подумайте о 3-пиксельном длинном изображении, например, черном белом белом цвете, если я перескажу его с ширины 3 до ширины 2, каков будет результат? Он становится 50% черного и 50% белого? Имеет ли штрих-код тот же контекст, что и раньше? подобно перемасштабированию с 165 до 108. Однако, если вы говорите от 216 до 108, возможно, стоит попробовать. –

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