2016-08-14 4 views
0

Ich habe einen Code geschrieben, der einen Barcode in Bezug auf erzeugen kann String codeText = "1104006"; und kann auch Daten von diesem Barcode lesen. Das Problem ist jedoch, dass beim Erzeugen eines Barcodes unterhalb des Barcodes auch der Text geschrieben wird (codeText). Wie kann ich den lesbaren Text entfernen, der im Beispiel rot eingekreist ist?So entfernen Sie Text aus Barcode image

example output with human readable circled in red

public class Main { 

    private static String strBarFolder = ("C:\\Users\\Jobayer__\\Desktop\\"); 

    public static void main(String[] args) { 

     String codeText = "1104006"; 
     String strImageFile = ("barcode.jpg"); 

     BarCodeBuilder builder = new BarCodeBuilder(Symbology.CODE39STANDARD, codeText); 
     builder.save(strBarFolder + strImageFile); 
     System.out.println("Successfully Done"); 

     Image img = Toolkit.getDefaultToolkit().getImage(strBarFolder + strImageFile); 
     BarCodeReader reader = new BarCodeReader(img, BarCodeReadType.Code39Standard); 

     while(reader.read()){ 
      System.out.println("Code Text Found: " + reader.getCodeText()); 
     } 
     reader.close(); 
    } 
} 
+0

Um ein schärferes Bild zu erhalten, sollten Sie ein verlustfreies Format wie PNG anstelle von JPG verwenden. Dies ist wahrscheinlich auch eine kleinere Datei aufgrund der Art des Bildes. –

Antwort

0

Kommen Sie in den Aspose Quellcode (wenn es zulässig) und kommentieren Sie die drawString() Methode, die den Text zum Bild Zeichnung oder den Strichcode-Bild ändern, indem Zeichnen eines weißen Rechtecks ​​mit fillRect() über den Textbereich (e) des Bildes.

Unten ist eine kleine runnable Konsolenanwendung, die ich schnell aufpeitschte, die letzteres durchführt. Es basiert weg von der Bar-Code Bild, das Sie zur Verfügung gestellt:

package barcodetextcoverup; 

import java.awt.Color; 
import java.awt.Graphics2D; 
import java.awt.image.BufferedImage; 
import java.awt.image.RenderedImage; 
import java.io.File; 
import java.io.IOException; 
import java.util.Scanner; 
import javax.imageio.ImageIO; 

public class BarCodeTextCoverUp { 

    public static void main(String[] args) { 
     startTextCover(); 
    } 

    private static void startTextCover() { 
     Scanner scnr = new Scanner(System.in); 
     String userInput = ""; 
     while (!userInput.equalsIgnoreCase("quit")) { 
      System.out.println("\nEnter the path and file name to the Bar Code image file\n" 
          + "to modify or enter quit to exit:"); 
      userInput = scnr.nextLine(); 
      if (userInput.equalsIgnoreCase("quit")) { break; } 

      // opening a bar code image from disk 
      BufferedImage src = null; 
      try { 
       src = ImageIO.read(new File(userInput)); 
       int iWidth = src.getWidth(); 
       int iHeight = src.getHeight(); 
       // Modify the image... 
       Graphics2D g2 = src.createGraphics(); 
       g2.setColor(Color.WHITE); 
       //Cover the text: Aspose.Demo 
       g2.fillRect(0, 0, 150, 30); 
       // Cover the codeText at bottom of Bar Code 
       g2.fillRect((iWidth/2) - 75, iHeight - 40, 150, 35); 
       g2.dispose(); 

       System.out.println("\nEnter a NEW path and file name for the modified Bar Code image.\n" 
           + "You can use the same file name just change the extention to .png:"); 
       userInput = scnr.nextLine(); 
       // If nothing is supplied then the modifications are not saved. 
       if (!userInput.equals("")) { 
        ImageIO.write((RenderedImage) src, "PNG", new File(userInput)); 
       } 
       System.out.println("----------------------------------------------------------------------"); 
      } catch (IOException ex) { } 
     } 
    } 
} 
0

Setzen Sie diese Eigenschaft:

builder.CodeLocation = CodeLocation.None; 

Einstellung CodeLocation auf Keinem wird der Barcode Text so zu schaffen die Wirkung von Barcode ohne verstecken Wert darin.

von Aspose Support-Forum: https://forum.aspose.com/t/creating-2d-bar-code-using-aspose-and-merging-it-in-pdf/7265

wenn Sie diese Eigenschaft caption Text ändern verwenden ...

builder.Display2DText = "this is caption text"; 

standardmäßig, wenn es auf leere Zeichenkette zeigt es codetext.