6
因为巴西政府不具备邮政编码公共API,我试图逆向工程是correios.com.br用来生成图像的下方,所以我可以生成自己的图像来训练OCR程序代码。的Java AWT的字体间距选项
我相信,我已经得到了几乎所有正确的文字旁边的间距和颜色:
我没有兴趣在现在的颜色,但文本间距真的困扰着我。例如,看看'Tijuca'中的'Ti'。这两个字母在原始图像中非常接近,我无法再现此功能。我已经尝试导出字体,值设置为TextAttribute.TRACKING
和TextAttribute.KERNING
,但没有奏效。
这里如下我的代码:
import java.awt.Color;
import java.awt.font.TextAttribute;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import javax.imageio.ImageIO;
public class CreateImage {
/**
* @param args
*/
public static void main(String[] args) {
int width = 570;
int height = 120;
boolean new_image = true;
BufferedImage img;
if (!new_image) {
try {
img = ImageIO.read(new File("original.jpg"));
} catch (IOException e) {
e.printStackTrace();
new_image = true;
img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
}
} else {
img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
}
Graphics2D g2d = img.createGraphics();
if (new_image) {
// white background
g2d.setPaint(Color.WHITE);
g2d.fillRect(0, 0, width, height);
g2d.setPaint(Color.BLACK);
} else {
g2d.setPaint(Color.RED);
}
Font myfont = new Font("SansSerif", Font.BOLD, 11);
/*
Hashtable<TextAttribute, Float> attributes = new Hashtable<TextAttribute, Float>();
attributes.put(TextAttribute.TRACKING, new Float(-0.01));
myfont = myfont.deriveFont(attributes);
*/
g2d.setFont(myfont);
g2d.drawString("Logradouro:", 5, 13);
g2d.drawString("Bairro:", 5, 33);
g2d.drawString("Localidade/UF:", 5, 53);
g2d.drawString("CEP:", 5, 73);
g2d.drawString("Avenida das Américas - de 3979 a 5151 - lado ímpar", 105, 13);
g2d.drawString("Barra da Tijuca", 105, 33);
g2d.drawString("Rio de Janeiro/RJ", 105, 53);
g2d.drawString("22631-004", 105, 73);
g2d.dispose();
File file = new File("clone.jpg");
try {
ImageIO.write(img, "jpg", file);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("clone.jpg file created.");
}
}
我的问题是:什么是其他选项来控制,当它绘制的字符串是如何分开?你对原始代码可能在做什么有什么想法吗?
谢谢!
参见http://download.oracle.com/javase/6/docs/api/java/awt/font/TextAttribute.html – trashgod 2010-11-20 17:47:13
嗨Jolta。感谢您的建议,但正如我在问题中所说的那样,我已经尝试了Kerning和Tracking,但它没有奏效。 – jbochi 2010-11-20 20:24:10