algorithm - एएससीआईआई कला छवि रूपांतरण एल्गोरिदम कैसे काम करते हैं?
ascii-art (3)
इस तरह से कुछ अच्छी तरह से "एएससीआईआई आर्ट के लिए छवि" रूपांतरण साइटें हैं: एएससीआईआईआर-
इस तरह के एक छवि रूपांतरण एल्गोरिथ्म कैसे काम करता है?
, . W , W W @ W ,W W , W, :W* .W . # WW @WW WW # W WW.WWW WW: W W. WW*WWW# [email protected] W * :[email protected]@W # +* #WW#WWWWWWWWWWWWW# W W# @WWWWWWWWWWWWWWWWW W WW WWWWWWWWWWWWWWWWWW W WW [email protected]# ,WW.WWWWWWWWWWWWWWWWWWWWW [email protected] : WWWWWWWWWWWWWWWWWWWWWWWW : @ [email protected]@@WWWWWW. W*WWWWWW::::@WWW:::::#WWWWW [email protected]:: :+*:. ::@WWWW [email protected]:*:.:: .,.:.:WWWW @WWWW#:.:::. .:: #:@WWW :[email protected]:#. :: :WWWW:@WWWW WWW#*:[email protected]*@W . W:#WWW #WWWW:@ :: :: *WWWW [email protected]*W .::,.::::,:+ @@WW#, WWWW## ,,.: .:::.: . .WWW:, @[email protected]: W..::::: #. :WWWW WWWW:: *..:. ::.,. :WWWW WWWW:: :.:.: : :: ,@[email protected] WWWW: .:, : ,, :WW, .: # : , : * W + ., ::: ., : @ W :: .: W @,,,W:. ,, ::*@*:, . :@W.,,@ +.....*: : : .#WWWWW: : .#:....+, @...:::*:,, : :WWWWWWW, , *::::..,# :...::::::W:, @W::::*W. :W:::::...# @@@@@@@@@@@[email protected]@@@@[email protected]@@@@@[email protected]@@@@[email protected]@@@@@@@@@:
बड़े-चित्र-स्तर की अवधारणा सरल है:
प्रत्येक प्रिंट करने योग्य चरित्र को लगभग ग्रे-स्केल मान असाइन किया जा सकता है; "ए" साइन
@
स्पष्ट रूप से "प्लस" चिह्न+
से तुलनात्मक रूप से गहरा है, उदाहरण के लिए वास्तव में उपयोग किए जाने वाले फ़ॉन्ट और रिक्ति के आधार पर प्रभाव अलग-अलग होगा।चयनित फ़ॉन्ट के अनुपात के आधार पर, इनपुट छवि को लगातार चौड़ाई और ऊंचाई (जैसे एक आयत 4 पिक्सल चौड़ा और 5 पिक्सल ऊंचे) के साथ आयताकार पिक्सेल ब्लॉक में समूह। प्रत्येक ब्लॉक ब्लॉक आउटपुट में एक अक्षर बन जाएगा। (सिर्फ पिक्सेल ब्लॉकों का इस्तेमाल करते हुए, 240W-x-320h की छवि 64 वर्णों की 64 पंक्तियां बन जाएगी।)
प्रत्येक पिक्सेल ब्लॉक के औसत ग्रे-स्केल मान की गणना करें
प्रत्येक पिक्सेल ब्लॉक के लिए, एक किरदार चुनें, जिसका ग्रे-स्केल मान (चरण 1 से) पिक्सेल ब्लॉक औसत (चरण 3 से) का अच्छा सन्निकटन है।
यह व्यायाम का सरलतम रूप है पिक्सेल ब्लॉक के उम्मीदवारों के बीच संबंध तोड़ते समय एक अधिक परिष्कृत संस्करण वर्णों के वास्तविक आकारों को भी ध्यान में रखेगा। उदाहरण के लिए, एक "स्लेश" ( /
) एक पिक्सेल ब्लॉक के लिए "पिछला स्लेश" ( \
) की तुलना में बेहतर विकल्प होगा जो नीचे-बायां-से-ऊपरी-दाएँ कंट्रास्ट फीचर दिखाई देता है
मुझे डैनियल फिशर द्वारा लिखे गए यह CodeProject आलेख को एसीसीआईआई कला कनवर्ज़न एल्गोरिथम के लिए एक छवि का एक सरल सी # कार्यान्वयन मिला ।
यह कार्यक्रम / लाइब्रेरी के कदम उठाए हैं:
- छवि स्ट्रीम को एक बिटमैप ऑब्जेक्ट में लोड करें
- ग्राफ़िक्स ऑब्जेक्ट का उपयोग करके बिटमैप ग्रेस्केल करें
- छवि के पिक्सल के माध्यम से लूप करें (क्योंकि हम एक पिक्सेल प्रति एएससीआईआई वर्ण नहीं चाहते हैं, हम प्रति 10 x 5 लेते हैं)
- प्रत्येक पिक्सेल को परिणामी एएससीआईआई चारों को प्रभावित करने के लिए, हम उन्हें लूप करते हैं और वर्तमान 10 x 5 ब्लॉक की मात्रा की गणना करते हैं।
- अंत में, गणना की गई राशि पर मौजूदा ब्लॉक के आधार पर अलग-अलग ASCII वर्ण संलग्न करें
बहुत आसान है, है ना?
बीटीडब्लू: लेख में दिए गए टिप्पणियों में मुझे यह शांत AJAX कार्यान्वयन मिला: गैया अजाक्स एएससीआईआई आर्ट जनरेटर :
[...] मुझे यह प्रदर्शित करने के लिए मजबूर महसूस हुआ कि यह आसानी से वेब प्रौद्योगिकियों के मानकीकृत सेट में किया जा सकता है मैं यह देखने के लिए तैयार हूं कि मुझे कुछ पुस्तकालयों का उपयोग करने के लिए मिल सकता है, और मुझे उनके एएससीआईआई फाईंग एनईटी लाइब्रेरी के बारे में सॉ फैन ली का कोडप्रूफ आलेख मिला है।
पीएस: लुकास (टिप्पणियां देखें) एक अन्य कोडप्राइज आलेख मिला
अलिब (2001 में आखिरी रिलीज) एक खुला स्रोत एएससीआईआई कला पुस्तकालय है, जो कि एमप्लेयर जैसे अनुप्रयोगों में उपयोग किया जाता है। आप यह देखने के लिए अपना स्रोत कोड देख सकते हैं कि यह कैसा होता है इसके अलावा, यह पृष्ठ इस बारे में अधिक विस्तार से वर्णन करता है कि इस तरह के एल्गोरिदम कैसे काम करते हैं।