Wikipedia describe as ASCII art as "A graphic design technique that uses computers for presentation and consists of pictures pieced together from the 95 printable (from a total of 128) characters defined by the ASCII Standard from 1963 and ASCII compliant character sets with proprietary extended characters (beyond the 128 characters of standard 7-bit ASCII)."
ASCII art has no use in real life. Still, it is fun to create pattern and images using the ASCII characters only. I still find people posting ascii picture of their name etc. on facebook.
It is very easy to create such art programatically. You can write text to a bitmap in any font you want and scan the bitmap to produce the ASCII image. A simple example which take a string as input and print out the name as the art is shown below:
ASCII art has no use in real life. Still, it is fun to create pattern and images using the ASCII characters only. I still find people posting ascii picture of their name etc. on facebook.
It is very easy to create such art programatically. You can write text to a bitmap in any font you want and scan the bitmap to produce the ASCII image. A simple example which take a string as input and print out the name as the art is shown below:
import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Scanner; public class ASCIIArt { public static void main(String[] args) throws IOException { int width = 150; int height = 28; Scanner sc = new Scanner(System.in); System.out.print("Enter your name: "); String name = sc.nextLine(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); g.setFont(new Font("Dialog", Font.BOLD, 20)); Graphics2D graphics = (Graphics2D) g; graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); graphics.drawString(name, 2, 20); for (int y = 0; y < height; y++) { StringBuilder strbuild = new StringBuilder(); for (int x = 0; x < width; x++) strbuild.append(image.getRGB(x, y) == -16777216 ? " " : "a"); if (strbuild.toString().trim().isEmpty()) continue; System.out.println(strbuild); } sc.close(); } }A sample run is shown below:
Enter your name: Knavite aaa aaaaaa aaa aa aaa aaaaaa aaa aaa aaa aaaaa aaa aaa aaaaa aaa aaa aaaaa aaaaaaaaa aaaaaaa aaaa aaaa aaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaaa aaaaaaaaa aaaa aaaa aaa aaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaaa aaaaaaaaa aaaa aaaa aaa aaa aaaa aaaa aaaaaaaaa aaaa aaaa aaa aaaa aaaa aaa aaa aaaa aaaa aaaaa aaaa aaaa aaa aaaaaaa aaa aaa aaa aaa aaaaaaaaa aaaa aaaa aaa aaa aaaaaaaaa aaaaaaa aaa aaa aaaaaaaaa aaaa aaaa aaa aaa aaaaaaaaa aaaaaaa aaa aaa aaaa aaa aaaa aaa aaa aaaa aaaa aaaaa aaa aaa aaaa aaa aaaa aaa aaa aaaaaaaaaa aaaaa aaa aaaaa aaaaaaaaa aaa aaaa aaa aaa aaaaaaaaaa aaaaa aaa aaaaa aaaaaaaaa aaa aaaa aaa aaa aaaaaaaaa aaa aaa aaaaa aaaaaaaYou can also use image to generate the art. Below example show the use of image for generating the art.
package com.example; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ASCIIArt { public static void main(String[] args) throws IOException { int width = 50; int height = 50; BufferedImage image = ImageIO.read(new File("C:\\Users\\naved.alam\\Desktop\\img.bmp")); for (int y = 0; y < height; y++) { StringBuilder strbuild = new StringBuilder(); for (int x = 0; x < width; x++) strbuild.append(image.getRGB(x, y) < -1 ? "a" : " "); if (strbuild.toString().trim().isEmpty()) continue; System.out.println(strbuild); } } }The output is shown below for the sample image:
aaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaa aaaaaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaa aaaaa aaaaaaaa aaaaaa aaaaaaaaa aaaaaa aaaaaa aaaaaaaaaaa aaaaaa aaaaa aaaaaaaaaaaaa aaaaa aaaaaa aaaaaaaaaaaaaaa aaaaaa aaaaa aaaaaaaaaaaaaaa aaaaa aaaaa aaaaaaaaaaaaaaa aaaaa aaaaa aaaaaaaaaaaaaaa aaaaa aaaaa aaaaaaaaaaaaaaa aaaaa aaaaaa aaaaaaaaaaaaa aaaaaa aaaaa aaaaaaaaaaa aaaaa aaaaaa aaaaaaaaa aaaaaa aaaaaa aaaaa aaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaaaaa aaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaUsing this concept, more flexiblity can be added to generated ascii images like different character for different RGB values, anti aliasing effect, different font weight and style etc.
Looks great !!!! (y)
ReplyDelete