ASCII-Art to stosunkowo prosty (ale BARDZO pomysłowy!) sposób tworzenia rysunków korzystając tylko z edytora tekstu.
Wyobraź sobie, że masz do „namalowania” obraz Mona Lisa (dość abstrakcyjny pomysł!) i do dyspozycji tylko notatnik (jeszcze bardziej abstrakcyjny pomysł!! xD).
Nie da się? No to patrz! 😉
Spis treści
ASCII art
________________________ |.----------------------.| || || || ______ || || .;;;;;;;;. || || /;;;;;;;;;;;\ || || /;/` `-;;;;; . .|| || |;|__ __ \;;;| || ||.-.|;| e`/e` |;;;| || || |;| | |;;;|'--|| || |;| '- |;;;| || || |;;\ --' /|;;;| || || |;;;;;---'\|;;;| || || |;;;;| |;;;| || || |;;.-' |;;;| || ||'--|/` |;;;|--.|| ||;;;; . ;;;;.\;;|| ||;;;;;-.;_ /.-;;;;;;|| ||;;;;;;;;;;;;;;;;;;;;;;|| ||jgs;;;;;;;;;;;;;;;;;;;|| '------------------------'
Idealnie pasuje do mojego poziomu zdolności artystycznych 😉
Podkręćmy jednak odrobinę wymagania:
_______
_,,ad8888888888bba,_
,ad88888I888888888888888ba,
,88888888I88888888888888888888a,
,d888888888I8888888888888888888888b,
d88888PP"""" ""YY88888888888888888888b,
,d88"'__,,--------,,,,.;ZZZY8888888888888,
,8IIl'" ;;l"ZZZIII8888888888,
,I88l;' ;lZZZZZ888III8888888,
,II88Zl;. ;llZZZZZ888888I888888,
,II888Zl;. .;;;;;lllZZZ888888I8888b
,II8888Z;; `;;;;;''llZZ8888888I8888,
II88888Z;' .;lZZZ8888888I888b
II88888Z; _,aaa, .,aaaaa,__.l;llZZZ88888888I888
II88888IZZZZZZZZZ, .ZZZZZZZZZZZZZZ;llZZ88888888I888,
II88888IZZ<'(@@>Z| |ZZZ<'(@@>ZZZZ;;llZZ888888888I88I
,II88888; `""" ;| |ZZ; `""" ;;llZ8888888888I888
II888888l `;; .;llZZ8888888888I888,
,II888888Z; ;;; .;;llZZZ8888888888I888I
III888888Zl; .., `;; ,;;lllZZZ88888888888I888
II88888888Z;;...;(_ _) ,;;;llZZZZ88888888888I888,
II88888888Zl;;;;;' `--'Z;. .,;;;;llZZZZ88888888888I888b
]I888888888Z;;;;' ";llllll;..;;;lllZZZZ88888888888I8888,
II888888888Zl.;;"Y88bd888P";;,..;lllZZZZZ88888888888I8888I
II8888888888Zl;.; `"PPP";;;,..;lllZZZZZZZ88888888888I88888
II888888888888Zl;;. `;;;l;;;;lllZZZZZZZZW88888888888I88888
`II8888888888888Zl;. ,;;lllZZZZZZZZWMZ88888888888I88888
II8888888888888888ZbaalllZZZZZZZZZWWMZZZ8888888888I888888,
`II88888888888888888b"WWZZZZZWWWMMZZZZZZI888888888I888888b
`II88888888888888888;ZZMMMMMMZZZZZZZZllI888888888I8888888
`II8888888888888888 `;lZZZZZZZZZZZlllll888888888I8888888,
II8888888888888888, `;lllZZZZllllll;;.Y88888888I8888888b,
,II8888888888888888b .;;lllllll;;;.;..88888888I88888888b,
II888888888888888PZI;. .`;;;.;;;..; ...88888888I8888888888,
II888888888888PZ;;';;. ;. .;. .;. .. Y8888888I88888888888b,
,II888888888PZ;;' `8888888I8888888888888b,
II888888888' 888888I8888888888888888b
,II888888888 ,888888I88888888888888888
,d88888888888 d888888I8888888888ZZZZZZZ
,ad888888888888I 8888888I8888ZZZZZZZZZZZZZ
,d888888888888888' 888888IZZZZZZZZZZZZZZZZZZ
,d888888888888P'8P' Y888ZZZZZZZZZZZZZZZZZZZZZ
,8888888888888, " ,ZZZZZZZZZZZZZZZZZZZZZZZZ
d888888888888888, ,ZZZZZZZZZZZZZZZZZZZZZZZZZZZ
888888888888888888a, _ ,ZZZZZZZZZZZZZZZZZZZZ888888888
888888888888888888888ba,_d' ,ZZZZZZZZZZZZZZZZZ88888888888888
8888888888888888888888888888bbbaaa,,,______,ZZZZZZZZZZZZZZZ888888888888888888
88888888888888888888888888888888888888888ZZZZZZZZZZZZZZZ888888888888888888888
8888888888888888888888888888888888888888ZZZZZZZZZZZZZZ88888888888888888888888
888888888888888888888888888888888888888ZZZZZZZZZZZZZZ888888888888888888888888
8888888888888888888888888888888888888ZZZZZZZZZZZZZZ88888888888888888888888888
88888888888888888888888888888888888ZZZZZZZZZZZZZZ8888888888888888888888888888
8888888888888888888888888888888888ZZZZZZZZZZZZZZ88888888888888888 Normand 88
88888888888888888888888888888888ZZZZZZZZZZZZZZ8888888888888888888 Veilleux 88
8888888888888888888888888888888ZZZZZZZZZZZZZZ88888888888888888888888888888888
Tym razem już dużo, dużo lepiej.
Czym w takim razie jest ASCII Art?
ASCII – ASCII Art
ASCII Art – Tego typu rysunki układane są za pomocą znaków ASCII np. samych cyfr, poszczególnych liter lub kresek.
Jeżeli interesuje Cię temat kodowania ASCII, to w podlinkowanym wpisie znajdziesz informacje, w jaki sposób działają kody ASCII, a komputer radzi sobie z przetwarzaniem poszczególnych symboli.
➡ ZOBACZ 👉: ASCII – ASCII table, tablica kodów AsCii – !”#$%&'()*+,-./0123456789:;<=>?@ABCD…
ASCII Art – Godło Polski (ang. image to ascii)
To spróbujmy czegoś jeszcze trudniejszego.
Otwórz ten obrazek w nowym oknie i przyjrzyj się – jak jest zrobiony – robi wrażenia, prawda? 🙂
ASCII Art generator
Na podobnej zasadzie można przekonwertować na ASCII art (ang. ascii converter) praktycznie dowolny obrazek.
@@@@@@ @ @ @@@@@@@
@@@@@@ @ @ @
@@ @@@@ @@@@@@ @@@@ @@@@@@@@@ @ @
@@@ @ @@@@@@ @@@ @@@@@@@@@ @ @
@@@@@@ @ @@ @@ @@ @@ @@@ @@ @ @
@@@ @ @@ @@ @@ @ @ @ @ @
@@ @ @@ @@ @ @ @ @ @ @
@@@@@@ @@ @@@@@@ @ @ @ @ @ @
@@@@@@ @@@ @@@@@@ @ @ @ @ @ @
-------------------------------------------------------------------
###### # # #######
###### # # #
## #### ###### #### ######### # #
### # ###### ### ######### # #
###### # ## ## ## ## ### ## # #
### # ## ## ## # # # # #
## # ## ## # # # # # #
###### ## ###### # # # # # #
###### ### ###### # # # # # #
I mój ulubiony 🙃
*********** **** ****************
************ **** **** ****************
************* **** **** ****************
************* **** **** ****
***** ** **** **** ****
***** ********** ********** **** ***** **** ****** ******* **** ****
****** ********** ************ ********** ******************** **** ****
*********** ********** ************** ********** ******************** **** ****
************* **** ************** ********** ******************** **** ****
************* **** ***** ***** ***** ***** ****** ***** **** ****
*********** **** ***** ***** ***** ***** ****** ***** **** ****
******* **** ***** ***** ***** ***** ***** **** **** ****
***** **** ***** ***** ***** **** **** **** **** ****
** ***** ***** ***** ***** **** **** **** **** **** ****
************** ****** ************** **** **** **** **** **** ****
************** ******** ************** **** **** **** **** **** ****
************* ******** ************ **** **** **** **** **** ****
************ ******* ********** **** **** **** **** **** ****
ASCII Art – ASCII generator
A jak udało mi się to zrobić?
Poniżej prosty snipped z kodem źródłowym.
- Tworzymy obrazek – BufferedImage image
- Wypełniamy go pożądanym tekstem – graphics2D.drawString
- Na końcu iterujemy jeszcze po całym obrazku i jeżeli natrafimy na fragment napisu, to zamieniamy go na pożądany znak ASCII.
public class AsciiArt {
public static void main(String[] args) {
int width = 200;
int height = 50;
BufferedImage image = new BufferedImage(
width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = (Graphics2D) image.getGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
graphics2D.drawString("Storm IT", 12, 24);
for (int y = 0; y height; y++) {
StringBuilder stringBuilder = new StringBuilder();
for (int x = 0; x < width; x++) {
stringBuilder.append(image.getRGB(x, y) == -16777216 ? " " : "*");
}
if (stringBuilder.toString().trim().isEmpty()) {
continue;
}
System.out.println(stringBuilder);
}
}
}
ASCII Art – ASCII Art converter
No dobra – to spróbujmy czegoś jeszcze trudniejszego.
Co powiesz na moje zdjęcie? 😉

I jak?
Zobaczmy w takim razie, co mam „w głowie”…

Jak to co?
To samo co wszyscy – czyli kropki, spacje, hashe, dolary i małpy 😂
ASCII Art – Java
Żeby osiągnąć taki efekt, musiałem trochę rozszerzyć poprzedni kod i dynamicznie dobierać jaki znak ma zostać wyświetlony.
BufferedImage image = ImageIO.read(AsciiArt.class.getResourceAsStream("/tomasz-wolinski.jpg"));
Graphics2D g = image.createGraphics();
List<Integer> pixels = new ArrayList<>();
for (int y = 0; y < image.getHeight(); y++) {
for (int x = 0; x < image.getWidth(); x++) {
pixels.add(image.getRGB(x, y));
}
}
int max = Collections.max(pixels) + 10;
int min = Collections.min(pixels);
int medium = min + (max - min) / 2;
System.out.println(String.format("Max: %s, min: %s, medium: %s", max, min, medium));
List<String> steps = Arrays.asList(" ", ".", "$", "#", "@");
int step = (max - min) / steps.size();
for (int y = 0; y < image.getHeight(); y++) {
StringBuilder stringBuilder = new StringBuilder();
for (int x = 0; x < image.getWidth(); x++) {
int stepIndex = Math.min(Math.floorDiv(max - image.getRGB(x, y), step), steps.size() - 1);
stringBuilder.append(steps.get(stepIndex));
}
if (stringBuilder.toString().trim().isEmpty()) {
continue;
}
System.out.println(stringBuilder);
}
ASCII Emoji 🧐
Przykładem bardzo prostych ASCII-Art są emotikony:
( ͡° ͜ʖ ͡°)x
(ꖘ‸ꖘ)
(¬、¬)
ʘ‿ʘ
( ¬‿¬)
Emotikony to połączenia znaków, które znajdziemy na klawiaturze komputerów i telefonów przypominające ludzką twarz, z charakterystycznymi elementami dla jej mimiki, wyrażając przez to emocje.
Ich nazwa wywodzi się od dwóch angielskich słów: „emotion” (emocje) i „icon” (znak).
Wraz z rozwojem technologii i wzrastającą liczbą użytkowników smartfonów większość emotikon zamieniana jest po wpisaniu ich na klawiaturze na graficzne odpowiedniki – piktogramy, czyli inaczej emoji. Wszystko poszło w kierunku uproszczenia – klikasz i masz: serduszka, słoneczka, buźki, budynki, zwierzęta i wiele innych.
➡ ZOBACZ 👉: Emotikony, emotki – do skopiowania, do pobrania, znaczenie
ASCII Art – Podsumowanie
Dzisiejszy wpis z lekkim przymrużeniem oka – mam jednak nadzieję, że jest dalej dla Ciebie wartościowy – również pod względem merytorycznym.
Chciałem też pokazać, że programowanie wcale nie musi być nudne i że można się przy nim naprawdę dobrze bawić.
Jestem bardzo ciekaw Waszych ASCII artów i Waszych zabaw programistycznych.
Pozdrawiam i do przeczytania!
Tomek
Niech JAVA będzie z Wami! 🙌
$$$$ $$$$$$ $$$$$ $$$$$ $$$$$$
$$$$ $$$$$$$$ $$$$$ $$$$$ $$$$$$$$
$$$$ $$$$$$$$ $$$$$$ $$$$$$ $$$$$$$$
$$$$ $$$$$$$$$ $$$$$ $$$$$ $$$$$$$$$
$$$$ $$$$$$$$$$ $$$$$ $$$$$ $$$$$$$$$$
$$$$ $$$$$$$$$$ $$$$$$ $$$$$$ $$$$$$$$$$
$$$$ $$$$$$$$$$$$ $$$$$ $$$$$ $$$$$$$$$$$$
$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$ $$$$$$$$$$$$
$$$$ $$$$$ $$$$$ $$$$$$ $$$$$$ $$$$$ $$$$$
$$$$ $$$$$$ $$$$$$ $$$$$ $$$$$ $$$$$$ $$$$$$
$$$$ $$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$
$$$$ $$$$$ $$$$$ $$$$$$$$$$$$ $$$$$ $$$$$
$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$$$
$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$$$
$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$$$
$$$$ $$$$$$ $$$$$$ $$$$$$$$ $$$$$$ $$$$$$
$$$$$ $$$$$ $$$$$ $$$$$$$$ $$$$$ $$$$$
$$$$$ $$$$$ $$$$$ $$$$$$ $$$$$ $$$$$
$$$$$
$$$$$$$
$$$$$$$$
$$$$$$$
$$$$$$
20+ BONUSOWYCH materiałów z programowania
e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!




