我有一個讀取java中條形碼的代碼,如果圖像只包含條形碼,它工作得非常好,但如果我嘗試讀取圖像形式的條形碼,它不起作用。但是,如果我corp條碼圖像並粘貼並創建新的圖像它正在工作。如何在java中讀取tif圖像的條形碼
從上面的場景中我發現如果圖像只包含條形碼,代碼工作正常,但如果它包含其他一些數據,則會失敗。
請在下面找到我用來閱讀條形碼的代碼。
package com.life;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import com.google.zxing.Reader;
import javax.imageio.ImageIO;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.ChecksumException;
import com.google.zxing.FormatException;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
public class BarcodeGeneration {
public static void main(String[] args) throws IOException {
InputStream barCodeInputStream = new FileInputStream("C:\\Destination\\AE973220_P01.TIF");
BufferedImage barCodeBufferedImage = ImageIO.read(barCodeInputStream);
LuminanceSource source = new BufferedImageLuminanceSource(barCodeBufferedImage);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Reader reader = new MultiFormatReader();
Result result;
try {
result = reader.decode(bitmap);
Systemwhi.out.println("Barcode text is " + result.getText());
} catch (NotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ChecksumException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
有什麼方法可以讀取精確的圖像位置說例如:只有圖像中使用x和y軸的條形碼。
下面是我試圖讀取特定圖像位置的代碼,但沒有奏效。
public static void main(String[] args) throws IOException {
try {
/*InputStream barCodeInputStream = new FileInputStream("C:/RinDestination/2012/12/2012-12-05/700466296/AE973220_P01.TIF");
BufferedImage barCodeBufferedImage = ImageIO.read(barCodeInputStream);
LuminanceSource source = new BufferedImageLuminanceSource(barCodeBufferedImage);*/
File imageFile=new File("C:/RinDestination/2012/12/2012-12-05/700466296/AD449293_P01.TIF" +
"");
BufferedImage image;
image = ImageIO.read(imageFile);
int height=image.getHeight();
System.out.println("height---"+height);
int width=image.getWidth();
System.out.println("width---"+width);
int minx=image.getTileHeight();
System.out.println("minx---"+minx);
int miny=image.getTileWidth();
System.out.println("miny---"+miny);
BufferedImage cropedImage = image.getSubimage(1654,-800,width,height);
LuminanceSource source = new BufferedImageLuminanceSource(cropedImage);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Reader reader = new MultiFormatReader();
Result result;
result = reader.decode(bitmap);
System.out.println("Barcode text is " + result.getText());
// byte[] b = result.getRawBytes();
// System.out.println(ByteHelper.convertUnsignedBytesToHexString(result.getText().getBytes("UTF8")));
//System.out.println(ByteHelper.convertUnsignedBytesToHexString(b));
} catch (NotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ChecksumException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但上述代碼不起作用。請告知如何以圖像形式閱讀條形碼。
問候, PISE
你有任何的堆棧跟蹤?因爲創建一個包含條形碼區域的緩衝區應該可以得到與自己裁剪圖像相同的結果。 – Brugere
嗨Brugere,第一個代碼我得到com.google.zxing.NotFoundException和第二個代碼我在線程「主」java.awt.image.RasterFormatException異常獲得異常:y位於柵格之外 – pise
你可以嘗試添加一個異常捕獲與最通用的類型和打印結果?也許這是另一個例外發生。 – Brugere