• mindbleach@sh.itjust.works
    link
    fedilink
    arrow-up
    8
    ·
    23 hours ago

    I don’t believe I’ve ever seen shape utilized in generated ASCII art

    Ah, someone’s never seen 8088 Corruption. The encoder was a brute-force comparison of source pixels with downscaled / blended characters in CGA’s few available colors.

    … wait, AAlib definitely uses shape. Is the author just new to ASCII art?

    Killer effort, regardless.

    • Redkey@programming.dev
      link
      fedilink
      arrow-up
      4
      ·
      16 hours ago

      When I was in my teens and twenties, I used to believe that if I thought of something that I’d never heard of before, I must have been the first person ever to come up with it.

      Now that I’m older and the Internet is ubiquitous, when I have those moments I go straight to a search engine. And even if I’m not the first, I still feel pretty good about discovering whatever it is for myself.

      • mindbleach@sh.itjust.works
        link
        fedilink
        arrow-up
        3
        ·
        16 hours ago

        Hell, I’m relieved when someone beat me to it. Means I can check it off my to-do list.

        ‘I bet you could combine Wine and QEMU’ was on there for a while, and oh thank god, FEX is serious business now.

  • tal@lemmy.today
    link
    fedilink
    English
    arrow-up
    6
    ·
    1 day ago

    I was kind of interested in doing this for Unicode a while back, which has the potential to provide for a lot more possible characters and thus a lot more-accurate renditions. If you don’t care about real-time operation, I suspect that you can do this with off-the-shelf software by just writing a small amount of code to generate an image for each character — a shell script driving ImageMagick could do it — and then feeding it into photomosaic software, like metapixel.

    The major limitation is that unless you’re just interested in doing this for the text-based aesthetic and are actually rendering and presenting an image to the end user — think something like Effulgence RPG, Warsim, Armoured Commander II, Armoured Commander, Cogmind, SanctuaryRPG, Cataclysm: Dark Days Ahead, Stone Story RPG, Roots of Harmony, and so forth — you can’t control the font that the thing is rendered in on the end user’s computer. And the accuracy of the rendering degrades the more the typeface used on an end user’s computer differs from your own.

    It’d probably be possible to build some kind of system that does take into account the differences for different typefaces, scores characters higher based on checking for character similarity across different typefaces.

    Note that there are also at least two existing libraries out there — what I can think of off the top of my head — that will do image-to-ASCII conversion — aalib and libcaca, the latter of which has color support. I also posted a tiny program some time back to generate images using the colored Unicode tiles, and I imagine that someone out there probably has a website that does the same thing.

    • tal@lemmy.today
      link
      fedilink
      English
      arrow-up
      3
      ·
      24 hours ago

      I apparently actually did two of these on different occasions, using different, restricted Unicode character ranges (ones that only look at the value of the character as a whole, no subpixel rendering). Can’t find the (newer) color one, but the black-and-white one:

          ░                                                                         
        ░░░░░░░                                                                     
       ░▒▒▒▒▒▒▒░░░                                                                  
       ░▒▓▓▓▒▒▒░░░░░                                                                
       ░▒▓▓▓▓▒▒▒▒▒░░░░░                                                      ░░░    
       ░▒▓▓▓▓▓▓▓▒▒▒▒▒▒▒░░                                              ░░░░░░░░░░░░░
       ░▒▓▓███▓▓▓▓▒▒▒▒▒▒▒░░                                         ░░░▒▒▒▒▒▒▒▒▒▒▒░░
       ░▒▓▓▓████▓▓▓▒▒▒▒▒▓▒▒░░                                 ░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▒▒░ 
        ░▒▓▓▓███▓▓▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░             ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▒░  
         ░▒▓▓▓█▓▓▓▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░▒▒▒░░░░░░░░░░░░░▒▒▓▓▓▓▓▓▒▒▒▒▓▓▓▓▓▓▓▒░   
          ▒▓▓▓██▓▓▓▒▒▒▒▒▒▓▓▓▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▓▓▓▓▓▒▒▒▓▓▓▓▓██▓▓▓▒░    
          ░▒▓▓▓████▓▓▓▓▓▓▓▓▓▓▒░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▓▓▓▒░     
          ░▒▒▓▓▓████▓▓▓▓▓▒▒▒▒▒▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒▓▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▒░       
          ░░▒▓▓▓▓██▓▓▓▒▒▒▒▒░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓█▓▓▓░░        
           ░▒▓▓▓▓▓▓▓▒▒░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓▓▓▓███▓▓▓▒░          
            ░▒▓▓▓▒▒░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░▒▒▓▓██▓▓▓▓▒░           
              ▒▒▒░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░▒▒▓▓▓▓▓▓▒░            
            ░░░░░░░░░░░░░░▒░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░▒▒▒▓▓▓▒░             
            ░▒▒▒░░░░▒▒▒▒░░▒▒▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒▒▒▒░░░░░░░░░░▒▒▒▒▒░              
           ░░▒▒▒▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▒▒▒▒▒▒░▒▒▒▓▓▓▒▒▒▒▒░░░░░░░░░░▒▒░               
          ░░▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒░░░░░░░░░▒░░               
          ░░▒▒▒▒▓▓▓▓▓▓▓▒▒▒▒▓▓▓████▓▓▒▒░░░░▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▒▒▒░░░░▒░░               
         ░▒▒▒▒▒▓▓▓▓▓▓▓▓▒▒▒▒░░░▒▒▓▓▓▓▒▒░░░░░░░░░▒▓▓████▓▓▓▓▒▒▒▒▒▒░░░░░               
        ░░▒▒▒▓▓▓▓▓▒▒▒▓▓▓▓▓▒▒▒░░░▒▒▓▒▒░░░░░░░░░░░▒▓▓▓▒▒▒▒▒░░▒▒▒▒▒▒░▒░                
          ░▒▒▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░                 
           ░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒░░░░░░░░░░░░░░▒▒▒▒▒▒▓▓▓▒▒░▒▒▒▒░                 
             ░▒▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▓▓▓▒▒▒░░░░░░░░░░░░░░▒▒▒▒▒▒▒▓▓▒▒▒░░▒▒▒░                
              ░▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▓▓▒▒▒▒░░░░░░  ░░░░░▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒░                
               ░▒▓▓▓▓▓▓▓▓▓▒▒▒▒▓▓▒▒░░░░░░      ░░░░▒▒▒▒░░▒▒▒▒▓▓▓▓▓▒▒░                
                 ░▒▓▓▓▓▓▓▓▒▒▓▓▓▒░░  ░░░░░▒▒▒░░   ░░▒▒░░░▒▓▓▓▓▓▒▒▒▒░                 
                  ░▒▒▒▓▓▓▓▓▓▓▓▒░░   ░░▒▓▓▓▓▓▓▒░░  ░░▒▒▒▓▓▓▓▓▒▒▒▒░                   
                       ░▒▒▓▓▓▓▒░   ░▓▓█▓▓▓▒▒▓▓▓▒░  ░▒▒▓▓▓▓▒▒▒▒░                     
                          ▒▒▓▒▒▒░░░▒▓███████▓██▓░   ░▒▓▓▓▒░░                        
                            ▒▒▒▒▒▒▒▒▓████▓▓████▓░   ░▒▒▒░                           
                              ░▒▒▒▒▒▓▓▓██████▓▒▒░░░░                                
                                ░▒▒▒▒▒▓▓▓▓▓▓▓▒▒▒▒░░                                 
                                  ▒▒▓▓▓▓▓▓▓▓▓▒░░                                    
                                    ░░▒▒▒▒▒▒░░                                      
      

      Is generated by the program with this uuencoded source:

      source
      begin 644 unicode_image.tar.xz
      M_3=Z6%H```3FUK1&`@`A`18```!T+^6CX"?_!IM=`":8269IV=F-Y,!%M1>4
      MZX(9LR,YMG1:D2XCM%DZ,0N4%>'\;I?0D"7/H:OI15<M6G@8HO/[&((J'=B.
      MXY\G/[7D"Y)B$O)IC]DM9Y@^\4T?'9(.Z.4+7IDF/T0&\7`M5+G#=C!?(>(U
      M+-C2%PZ!"(Q'Z_/D^%"[PVKX:A:OKH5WF?AQ=CD_AAS]<3<THTMC0S8FG\<A
      MZ;A-_9H?)5S'YG5A?0WUQ7FR0+IS\0AEUYY9QFMY?"$);\U%_R0NK(ZZ/Y&J
      MVA;@#O-P.6W8PW']0U"<S'NHB=.(/)OX[<1&UF@M8+GXPGVFQB_+K/WD01ZO
      MO#+E!CK;^`V-WGH^?0V5M!IK[KR&]`IR<>6D+ONPJT6E\CZJ^KKZ,W?3O"2K
      M!/GHQ&TDN';;P#UC;)+HRPH$`_8JM#ZV`\I6=,PO=U#S33IZ=R!K2IF]\1D@
      M*@I6;)=1P[3ICJ%,C5VTH^%^^N7(`)5NO*-SG)Y`QA_WK>PA8;TJ+X2)EV?3
      MI.G"[*>WWDZ7\Q_8`@,?X8C9YSMNGQ.S79!10SGB!PGY<3)L+A>\T4NE3RCH
      M@$<!]40^I5;'[)@>$KCW3*:VMQ")"FQ!"L?^:Y5K)WM]*CV<",@L38:E&'G;
      MOH/\?B8-H-/5$-+1`SZ2O6RHY>T@2+Q"LM7T32<P'/M;:&`9G%<:2]0W95K<
      M\.;8"EQMW`_,%NF[4)3]`F-BE^_T2,`,VV:G?3TUJ"IH\A@>7Y8:?5[I8HAX
      M/S[+K[U+U);"B>&TTWB[]4K_N9HNW6P5\,!8G[BS*%\3<$#RM"O`6C#I1>3W
      ME/8D\";AO1[@@M<^$07W%./W$^^MXKWV/QE?(SEU3GAF"?/TXQ_1N>#/)-;8
      M<MT]?:XBQTJ%9'[+D!X/9^"U.Y*2A(8A/AJ\!K^V\)9>''<,=_M*GQ;D4XU&
      M0EL_A7==:2!F6+.18],W)'0*A8VHHT@F\^+U@*=PAW&]_UDA'O3HL,)67*56
      M:4QHF]DC7*EMI@?8=/,8;'O4[2W^#V!$L.(O\+@E"I[>5AF7V].]DSR0?>4E
      MX,HXX%S-A'V'+F)3(0_FX[O!VNO&D/BL`T<!(LJ,(@3!S8LJ[><9CHP*Z!1N
      M*W=F7"R-"ZZ_7"_NQ:8M=&RU\7`Z`<J>2YY>W2B\R7!YX(:UE+7?[1HLZ6?B
      M_$Z<[I3[+!'?["<`BV0HHVNVZ$?*E!CLQ,Q'U$5$IQ?#B#+P)WE/$$-*'U<E
      M%+7[;;^I\)F++WU`\\BL@X5,*B+]OLWQ&=W!,3*4_5Z0'R\2N/\];P>]W2<(
      M-7Z3$YL3&6;-"*NTT2_Z1P=4">JZT,0Y$Q`L;RU@2\X!6>NA6D:5#HOIP#H]
      MH)2I8$WFSU,1M9OC73J.1T1-YWD[%EH?1E*H#MV/[+5HSKGU.-%-'Z)QI=$\
      MV>24Q6&KMA*-=L#[#I[2'0$86N)&8E/==`F@,S#5,`)(-KDT6A9IK-/%6OA@
      M@FI$$#7G>&.Z!8[?8:F==P>HX>WF&.?(9V6^WM`J[CVD`L]9<&\6P_U?*WN`
      MLI*_M*H;SP58M&#X!>*U*^J*XO@UT"&SIGH1%(K-=7DN@=HD6`S2EET,60JV
      MI_\%)%6Q_^3CW_5`HQ;G084_7J0'F9DDH*%`SY*.D1BP`"D_QO=5,F?$-HAG
      M_FP7H+LUTX`^%F-[SV(C'N*+AXE=&!+'OT$)RYGQ/HX,L8W(D%G9J=P!6+*$
      M)F20)=%>9ZI).Z0`I'T/OT#SUR_:(O0U1*2-:,\D0S52^NI?HL69"POCNH&X
      M_HXLQZB3EL-Z<)4.!<<BDJX3H"Q`L'&"RLO/%]17EV.5R@/$,%GYE#U(,Z'.
      M6#]?M?@0VYB%WU2-4E:Z&9RN,"SCQAYJ70='?0`L5JC6GG#:1BG]DBCY;N)<
      M>[;>JU-P]W=*RQG_KX;[>Y-0O.>_BS[M!=3Y#98EA`S8J/\1S=Z..*RC^;+U
      M!.(#>E-V^?_+/M323Q,+EM-95M%CT#G[XO0FH/`.&`__EU<3\=+#>7?FR*NY
      M9MA;$1+KD8?V@Y8XE7`(*;.N\KEF1]T4!OYS1+%#*S9&[0-#E"FRGA^\L[^A
      M\76@2CMV<J_S92KW%;UO$.=R!3!P]OD.WD@*ZE(.;>H)8L]IMC;<YHPNH343
      MY,JGKBM7M:!:S]$UJ7Y-/A'>Z]^7LV*Y.]N\MN_#%%%>)IH_A_:G46]+E.M;
      MUA@I>99IP916P;7A48N3VF+;&!__1Q<QF8AU`XF-LJ./^6J+@+JCLICOF=I-
      M.U"KKV.._JR/;P(````4=99=LD1P/P`!MPV`4```*JOOO;'$9_L"``````19
      !6@``
      `
      end
      

      I’ve also seen various programs that use the Braille Unicode characters for higher-resolution bitmap rendering, like mapscii, and I suspect that someone’s probably written software to convert to that.