ASCII – ASCII art ♨️ ☢️ ☣️ (◍•﹏•)

ASCII ART

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! 😉

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 – Godło Polski

ASCII ART (źródło: wikipedia.org)

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 obrazekBufferedImage 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? 😉

ASCII Art – Tomasz Woliński

I jak?

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

ASCII Art converter

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 🧐Dzień emotikona

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! 🙌

$$$$         $$$$$$       $$$$$        $$$$$       $$$$$$                                                                                                                                 
$$$$        $$$$$$$$      $$$$$        $$$$$      $$$$$$$$                                                                                                                                
$$$$        $$$$$$$$      $$$$$$      $$$$$$      $$$$$$$$                                                                                                                                
$$$$       $$$$$$$$$       $$$$$      $$$$$      $$$$$$$$$                                                                                                                                
$$$$       $$$$$$$$$$      $$$$$      $$$$$      $$$$$$$$$$                                                                                                                               
$$$$       $$$$$$$$$$      $$$$$$    $$$$$$      $$$$$$$$$$                                                                                                                               
$$$$      $$$$$$$$$$$$      $$$$$    $$$$$      $$$$$$$$$$$$                                                                                                                              
$$$$      $$$$$$$$$$$$      $$$$$$  $$$$$$      $$$$$$$$$$$$                                                                                                                              
$$$$      $$$$$  $$$$$      $$$$$$  $$$$$$      $$$$$  $$$$$                                                                                                                              
$$$$     $$$$$$  $$$$$$      $$$$$  $$$$$      $$$$$$  $$$$$$                                                                                                                             
$$$$     $$$$$$  $$$$$$      $$$$$$$$$$$$      $$$$$$  $$$$$$                                                                                                                             
$$$$     $$$$$    $$$$$      $$$$$$$$$$$$      $$$$$    $$$$$                                                                                                                             
$$$$    $$$$$$$$$$$$$$$$      $$$$$$$$$$      $$$$$$$$$$$$$$$$                                                                                                                            
$$$$    $$$$$$$$$$$$$$$$      $$$$$$$$$$      $$$$$$$$$$$$$$$$                                                                                                                            
$$$$    $$$$$$$$$$$$$$$$      $$$$$$$$$       $$$$$$$$$$$$$$$$                                                                                                                            
$$$$   $$$$$$      $$$$$$      $$$$$$$$      $$$$$$      $$$$$$                                                                                                                           
$$$$$   $$$$$        $$$$$      $$$$$$$$      $$$$$        $$$$$                                                                                                                           
$$$$$   $$$$$        $$$$$       $$$$$$       $$$$$        $$$$$                                                                                                                           
$$$$$                                                                                                                                                                                      
$$$$$$$                                                                                                                                                                                      
$$$$$$$$                                                                                                                                                                                      
$$$$$$$                                                                                                                                                                                       
$$$$$$  


Jak zostać programistą

8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista.

Jak zostać programistą
No comments
Share:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *