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!
[su_button url="/ebook/?r=1&utm_campaign=w_pt" target="blank" style="soft" size="8" center="yes" icon="icon: download" desc="e-book" title="Pobieram darmowy e-book"]Odbieram Dostęp Do E-Booków![/su_button]