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 *