ascii_art
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
ascii_art [2023/03/24 10:55] – frchris | ascii_art [2023/03/25 12:21] – [Step 1. Read your image and print its height and width in pixels] frchris | ||
---|---|---|---|
Line 34: | Line 34: | ||
</ | </ | ||
==== Step 0. Choose an image ==== | ==== Step 0. Choose an image ==== | ||
+ | |||
+ | Choose the first image that you want to convert into ASCII art. It’s good to start with an image around 640x480. | ||
+ | <code PickPicture.java> | ||
+ | import java.awt.Color; | ||
+ | import java.awt.Font; | ||
+ | import java.awt.Graphics; | ||
+ | import javax.swing.JFrame; | ||
+ | import javax.swing.JPanel; | ||
+ | import java.awt.image.BufferedImage; | ||
+ | import java.io.File; | ||
+ | import java.io.IOException; | ||
+ | import javax.imageio.ImageIO; | ||
+ | import java.awt.*; | ||
+ | /** | ||
+ | | ||
+ | | ||
+ | | ||
+ | */ | ||
+ | public class PickPicture extends JPanel | ||
+ | { | ||
+ | | ||
+ | private String fileName; | ||
+ | private BufferedImage source; | ||
+ | private Font titleFont, regularFont; | ||
+ | |||
+ | public PickPicture(String fileName) | ||
+ | { | ||
+ | titleFont = new Font(" | ||
+ | regularFont = new Font(" | ||
+ | try | ||
+ | { | ||
+ | // the line that reads the image file | ||
+ | this.fileName = fileName; | ||
+ | this.source = ImageIO.read(new File(fileName)); | ||
+ | System.out.println(fileName + " read "); | ||
+ | System.out.println(source.getWidth() + " by " + source.getHeight()); | ||
+ | |||
+ | } | ||
+ | catch (IOException e) | ||
+ | { | ||
+ | System.out.println(" | ||
+ | "Make sure the file is \n 1. In the project folder,\n " + | ||
+ | "2. The file name is perfect-including capital letters\n " + | ||
+ | "3. The extension is right-like .png or .jpg\n " + e); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | public int getWidth() {return source.getWidth(); | ||
+ | public int getHeight() {return source.getHeight(); | ||
+ | | ||
+ | public void paintComponent(Graphics g){ | ||
+ | super.paintComponent(g); | ||
+ | g.setColor(Color.WHITE); | ||
+ | g.fillRect(0, | ||
+ | g.drawImage(source, | ||
+ | g.setColor(Color.BLACK);// | ||
+ | g.setFont(titleFont); | ||
+ | g.drawString(fileName, | ||
+ | g.setFont(regularFont); | ||
+ | g.drawString ( getWidth() + " by " + getHeight(), | ||
+ | | ||
+ | | ||
+ | } | ||
+ | | ||
+ | public static void main(String[] args) { | ||
+ | PickPicture pic= new PickPicture(" | ||
+ | JFrame window = new JFrame(" | ||
+ | window.setSize(pic.getWidth(), | ||
+ | window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | ||
+ | window.getContentPane().add(pic); | ||
+ | window.setVisible(true); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
==== Step 1. Read your image and print its height and width in pixels ==== | ==== Step 1. Read your image and print its height and width in pixels ==== | ||
+ | |||
+ | <code Step1.java> | ||
+ | import java.awt.image.BufferedImage; | ||
+ | import java.io.File; | ||
+ | import java.io.IOException; | ||
+ | import javax.imageio.ImageIO; | ||
+ | |||
+ | public class Step1 | ||
+ | { | ||
+ | private BufferedImage image; | ||
+ | private String fileName; | ||
+ | public Step1(String fileName) | ||
+ | { | ||
+ | try | ||
+ | { | ||
+ | // the line that reads the image file | ||
+ | this.fileName = fileName; | ||
+ | image = ImageIO.read(new File(fileName)); | ||
+ | System.out.println(fileName + " read "); | ||
+ | | ||
+ | System.out.println(" | ||
+ | // Print the width and height of the image using a BufferedImage method. | ||
+ | |||
+ | } | ||
+ | catch (IOException e) | ||
+ | { | ||
+ | System.out.println(" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public static void main(String[] args) | ||
+ | { | ||
+ | new Step1(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
==== Step 2. Load your image’s pixel data into a 2-dimensional array ==== | ==== Step 2. Load your image’s pixel data into a 2-dimensional array ==== | ||
- | ==== Step 3. | + | <code Step2.java> |
- | ==== Step 4. | + | import java.awt.image.BufferedImage; |
+ | import java.io.File; | ||
+ | import java.io.IOException; | ||
+ | import javax.imageio.ImageIO; | ||
+ | |||
+ | public class Step2 | ||
+ | { | ||
+ | private BufferedImage image; | ||
+ | private String fileName; | ||
+ | public Step2(String fileName) | ||
+ | { | ||
+ | try | ||
+ | { | ||
+ | // the line that reads the image file | ||
+ | this.fileName = fileName; | ||
+ | image = ImageIO.read(new File(fileName)); | ||
+ | System.out.println(fileName + " read "); | ||
+ | |||
+ | System.out.println(" | ||
+ | // Print the width and height of the image using a BufferedImage method. | ||
+ | |||
+ | } | ||
+ | catch (IOException e) | ||
+ | { | ||
+ | System.out.println(" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public static void main(String[] args) | ||
+ | { | ||
+ | new Step2(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | ==== Step 3. Convert the RGB tuples of your pixels into single brightness numbers | ||
+ | ==== Step 4. Convert brightness numbers to ASCII characters | ||
+ | ==== Step 5. What if it looks your image looks squashed? | ||
[[https:// | [[https:// |
ascii_art.txt · Last modified: 2023/03/27 10:46 by frchris