【发布时间】:2012-11-29 09:23:11
【问题描述】:
在我的应用程序中,我需要从图像上显示的扩展 ASCII 表中获取字符。但是当我将十进制值转换为 char 时,我会得到不同的字符。这些字符在 JAVA 中的真正价值是什么。我不会将字符写入控制台或文件中,而是写入图像中。
private void generateAsciiMatrix()
{
//32 - 255 are visible characters in ascii table
for(int i = 32; i < 256; i++)
{
this.generateAsciiMatrix((char)i);
}
}
private void generateAsciiMatrix(char letter)
{
EBufferedImage character = new EBufferedImage(
ImageClass.charToImage(letter, width, height));
//...some code
}
public static BufferedImage charToImage(char c, int width, int height)
{
BufferedImage off_Image = new BufferedImage(width, height,
BufferedImage.TYPE_BYTE_GRAY);
Graphics2D g2 = off_Image.createGraphics();
g2.setColor(Color.black);
g2.setBackground(Color.WHITE);
g2.clearRect(0, 0, width, height);
g2.setFont(new Font("Monospaced", Font.PLAIN, 12));
g2.drawString(Character.toString(c), 0, height);
saveImage(off_Image, "code" + (int)c);
return off_Image;
}
感谢您的帮助,也很抱歉我的英语不好:-)
【问题讨论】:
-
“扩展 ASCII 表”只是“高于 ASCII”八位字节值到终端(或其他渲染设备)上的符号的一种映射。也就是说,它只是众多code-pages 中的一个,用于映射128-255 的值。也就是说,显示的字符取决于 什么 显示它(例如指定的含义和“字体”)以及它应用的其他适用规则(例如代码页或“语言”)。
-
那么我如何强制我的java程序使用这个代码页?
-
我只在图像上写字符,然后我只处理图像
-
@zdarsky.peter 将其添加到问题中: 字符是如何被写入/渲染的?