ASCIIアートJavaの例

ASCII art
グラフィックを作成する面白いJavaの例です。概念は単純で、イメージのRGBカラーを「整数モード」で取得し、後でカラーの整数をASCIIテキストで置き換えます。
P.Sこの例は、このhttp://stackoverflow.com/questions/7098972/ascii-art-java[post]
ASCIIArtService.java
package com.mkyong.service;
import java.awt.** ;
import java.awt.image.BufferedImage;
import java.io.IOException;
public class ASCIIArtService {
public static void main(String[]args) throws IOException {
int width = 100;
int height = 30;
//BufferedImage image = ImageIO.read(new File("/Users/mkyong/Desktop/logo.jpg"));
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE__INT__RGB);
Graphics g = image.getGraphics();
g.setFont(new Font("SansSerif", Font.BOLD, 24));
Graphics2D graphics = (Graphics2D) g;
graphics.setRenderingHint(RenderingHints.KEY__TEXT__ANTIALIASING,
RenderingHints.VALUE__TEXT__ANTIALIAS__ON);
graphics.drawString("JAVA", 10, 20);
//save this image
//ImageIO.write(image, "png", new File("/users/mkyong/ascii-art.png"));
for (int y = 0; y < height; y++) {
StringBuilder sb = new StringBuilder();
for (int x = 0; x < width; x++) {
sb.append(image.getRGB(x, y) == -16777216 ? " " : "$");
}
if (sb.toString().trim().isEmpty()) {
continue;
}
System.out.println(sb);
}
}
}
出力
$$$ $$$$$ $$$$ $$$$ $$$$$
$$$ $$$$$$$ $$$$ $$$$ $$$$$$$
$$$ $$$$$$$ $$$$$ $$$$$ $$$$$$$
$$$ $$$$$$$ $$$$ $$$$ $$$$$$$
$$$ $$$$ $$$$ $$$$$ $$$$$ $$$$ $$$$
$$$ $$$$ $$$$ $$$$ $$$$ $$$$ $$$$
$$$ $$$$$ $$$$$ $$$$ $$$$ $$$$$ $$$$$
$$$ $$$$ $$$$ $$$$$ $$$$$ $$$$ $$$$
$$$ $$$$ $$$$ $$$$ $$$$ $$$$ $$$$
$$$ $$$$$ $$$$$ $$$$$ $$$$$ $$$$$ $$$$$
$$$ $$$$$$$$$$$$$ $$$$ $$$$ $$$$$$$$$$$$$
$$$$ $$$$ $$$$$$$$$$$$$ $$$$ $$$$ $$$$$$$$$$$$$
$$$$ $$$$ $$$$$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$
$$$$$ $$$$$ $$$$ $$$$ $$$$$$$ $$$$ $$$$
$$$$$$$$$$$ $$$$$ $$$$$ $$$$$$$ $$$$$ $$$$$
$$$$$$$$$ $$$$ $$$$ $$$$$ $$$$ $$$$
$$$$$$$ $$$$ $$$$ $$$$$ $$$$ $$$$
参考文献
-
http://stackoverflow.com/questions/7098972/ascii-art-java
[Stackoverflow-
Javaのアスキーアート]
-
-
http://javanullpointer.com/266-creating-graphic-form-provided-integer.html
[Creating
提供される整数のグラフィック形式]