ascii 아트 변환기에 많은 이미지를 보았습니다. 그러나 필요한 것은 좀 더 복잡합니다. ascii 문자로 만든 모자이크 이미지 대신 미리 정의 된 일련의 문자열을 모자이크 타일로 사용할 수 있어야합니다.임의의 문자열에서 이미지 생성
나는 인터넷 검색을 잘 해왔지만, 내 쿼리를 구조화하는 방법조차 모르겠다. 이것과 같은 것이 존재합니까? 그리고 보너스는 이미지 생성에 중복을 사용하지 않을 경우입니다.
ascii 아트 변환기에 많은 이미지를 보았습니다. 그러나 필요한 것은 좀 더 복잡합니다. ascii 문자로 만든 모자이크 이미지 대신 미리 정의 된 일련의 문자열을 모자이크 타일로 사용할 수 있어야합니다.임의의 문자열에서 이미지 생성
나는 인터넷 검색을 잘 해왔지만, 내 쿼리를 구조화하는 방법조차 모르겠다. 이것과 같은 것이 존재합니까? 그리고 보너스는 이미지 생성에 중복을 사용하지 않을 경우입니다.
스택 오버 플로우에는 적합하지 않지만 흥미로운 프로젝트입니다. 그래서 나는 약간의 재미를 위해 그것에 가야했고, 내가 얻을 수 있었던 방법을 알았다.
나는이 내려 온다 생각 :
아주 작은 이미지와 후보 문자열이 많지 않으면 "중복되지 않음"이 가능하지 않다고 생각합니다. 이것은 내 아바타와 현재의 배지를 문자열 목록으로 사용하여 만들어 낸 것입니다. (내 "C"배지를 제외; 어떻게 든 내 프로그램은 그것이 매우 매력적이었다 큰 패치에 대한 '최적'라고 판단 정신 참고 :.. 1 문자열을 포함하지 않음)
QuorumQuorumAutobiographerQuorumQuorumQuorumJongwareQuorumQuorumQuorumQuorumQuor
umQuorumQuorumAutobiographerQuorumQuorumSupporterQuorumQuorumProofreaderQuorumQu
orumQuorumAutobiographerQuorumQuorumQuorumQuorumQuorumQuorumAutobiographerQuorum
QuorumQuorumAutobiographerQuorumQuorumQuorumQuorumQuorumQuorumAutobiographerQuor
umQuorumQuorumAutobiographerQuorumQuorumQuorumAutobiographerQuorumMortarboardQuo
rumQuorumAutobiographerQuorumQuorumQuorumQuorumAutobiographerQuorumMortarboardQu
orumQuorumAutobiographerQuorumQuorumQuorumQuorumJongwareQuorumQuorumCommentatorQ
uorumQuorumAutobiographerQuorumQuorumQuorumQuorumQuorumQuorumQuorumAutobiographe
rQuorumQuorumAutobiographerQuorumQuorumProofreaderJongwareQuorumQuorumQuorumQuor
umQuorumQuorumMortarboardJongwareQuorumProofreaderCommentatorSuffrageQuorumQuoru
mQuorumQuorumJongwareQuorumAutobiographerSuffrageCommentatorCaucusCriticCleanupQ
uorumQuorumMortarboardAutobiographerCommentatorQuorumConstituentCriticCriticQuor
umQuorumQuorumQuorumAutobiographerJongwareCleanupSupporterInvestorCriticCleanupQ
uorumQuorumQuorumQuorumAutobiographerFanaticCleanupFanaticInvestorCriticCleanupQ
uorumQuorumQuorumQuorumAutobiographerCriticInformedSupporterCriticCriticInformed
QuorumQuorumQuorumQuorumAutobiographerCriticQuorumSupporterInvestorFanaticQuorum
QuorumQuorumQuorumQuorumAutobiographerCriticCleanupCommentatorQuorumDeputyQuorum
QuorumQuorumQuorumQuorumAutobiographerCriticInvestorCaucusInformedDeputyQuorumQu
orumQuorumQuorumQuorumQuorumCommentatorCriticCriticCitizen PatrolQuorumQuorumQuo
rumQuorumQuorumQuorumQuorumAutobiographerCriticCriticCitizen PatrolQuorumQuorumQ
uorumQuorumQuorumQuorumQuorumAutobiographerCriticCriticCitizen PatrolStewardQuor
umQuorumQuorumQuorumQuorumAutobiographerConstituentCitizen PatrolCaucusQuorumQuo
rumQuorumQuorumQuorumQuorumAutobiographerInvestorCriticConstituentQuorumQuorumQu
orumQuorumQuorumQuorumQuorumCommentatorConstituentCleanupCaucusCleanupQuorumQuor
umQuorumQuorumQuorumQuorumAutobiographerInvestorCleanupSupporterInformedQuorumQu
orumQuorumQuorumAutobiographerCommentatorCriticInformedJongwareJongwareQuorumQuo
rumQuorumQuorumAutobiographerCommentatorCriticInvestorJongwareJongwareQuorumQuor
umQuorumQuorumAutobiographerFanaticInvestorCriticInformedCleanupQuorumQuorumQuor
umQuorumQuorumQuorumDeputySupporterInvestorConstituentCaucusQuorumQuorumQuorumQu
orumQuorumQuorumAutobiographerCriticInvestorCriticSupporterQuorumQuorumQuorumQuo
rumQuorumQuorumQuorumAutobiographerInvestorInvestorCleanupQuorumQuorumQuorumQuor
umQuorumQuorumQuorumQuorumCommentatorInvestorInvestorQuorumQuorumQuorumQuorumQuo
rumQuorumQuorumQuorumQuorumCommentatorInvestorInvestorQuorumQuorumQuorumQuorumQu
orumQuorumQuorumQuorumQuorumCommentatorInvestorCleanupStewardQuorumQuorumQuorumQ
uorumQuorumQuorumQuorumQuorumCommentatorInvestorJongwareQuorumQuorumQuorumQuorum
QuorumQuorumQuorumQuorumQuorumAutobiographerCleanupQuorumQuorumQuorumQuorumQuoru
mQuorumQuorumQuorumQuorumQuorumAutobiographerSuffrageQuorumQuorumQuorumQuorumQuo
rumQuorumQuorumQuorumQuorumQuorumAutobiographerDeputyQuorumQuorumQuorumQuorumQuo
rumQuorumQuorumQuorumQuorumQuorumQuorumAutobiographerQuorumQuorumQuorumQuorumQuo
rumQuorumQuorumQuorumQuorumQuorumQuorumQuorumQuorumQuorumQuorumQuorumQuorumQuoru
당신은 약간의 곁눈질을해야합니다. 작은 크기는 다음과 같습니다
여기내가 그것을 만든 방법이다.
1 단계 : 적절한 이미지를 찾습니다.
2 단계 : 회색 음영으로 변환;
3 단계 : 회색을 극단으로 변환합니다. 이 단계는 입력 범위 (회색 값)가 0에서 255까지의 전체 범위를 사용하는지 확인하는 것입니다.
4 단계 : 이미지의 크기를 가장 잘 맞게 조정합니다. 나는 80x40을 고르고 의도적으로 이미지를 반으로 쪼개었다. 왜냐하면 '텍스트'는 일반적으로 너비보다 큽니다. 다른 글꼴은 다른 종횡비가 필요합니다! 80
은 줄당 문자 수이고, 40
은 총 줄 수입니다.
저는 위의 단계에서 Photoshop을 사용했습니다. 단지 코드을 쓰고 싶지 않았기 때문입니다. 원시 이미지 데이터에 액세스 할 수있는 한 어렵지도 않습니다. 그러나 많은 작업과 흥미롭지 않습니다. 당신은 픽셀을 볼 수 있도록 400 %로 확대
중간 단계 :
5 단계 : 자신 고정 폭 비트 맵 글꼴을 찾을 수 있습니다. 나는 '웹상에서 좋은 8x8을 발견했다. 아마도 더 큰 크기 은 일 수 있습니다. 그러나 제한 요소가 문자열이 아니기 때문에 매우 작습니다.
6 단계 : 각 ASCII 문자의 '회색'값을 계산합니다. 이것은 검정 픽셀 수를 총 픽셀 수로 나눈 값입니다. 더 나은 스프레드를 위해 각 문자의 결과를 최대 값으로 나누었으므로 가장 낮은 값은 0
(공백으로)이고 가장 높은 값은 1
(이 값은 M
이지만 글꼴에 따라 다릅니다)입니다. 그런 다음 값에 255를 곱하여 회색 음영 값을 모방했습니다. 마지막으로이 값은 그레이 스케일 이미지의 값과 반대이므로 255-value
으로 바꿨습니다.
사이에 나는 초기 아이디어가 여전히 확실한지 확인하기 위해 많은 테스트를 수행했습니다.
0MMMMMM00000000000RDRRDDDDDDDDDDDDDDR#@RRRRR#[email protected]@[email protected]&44�#0000
MMMMMM000000000000RDRDDDDDDDDDDDDDDDR0####0R&&&&&&[email protected]@#########[email protected]
MMM000#00000000000RDRRDDDDDDDDDDD&&&R00#[email protected]&[email protected]####[email protected]#0000000##0#RD4PP&[email protected]
M000#0000000000000RDDDDDDDDDDD&D&&D&R###[email protected]#0000#@@##@@@@@##000000R&2FPP4R#000
00###0000000000000RDDDDDDDDDDDDDD&&&D0000#@##@##00##@RDD&DRRRR#[email protected]@00
00#000000000000000RDDDDDDDDDD&D&D&&&[email protected]@@##00#R&4&44DDDRRR#0000##R&[email protected]
00##00#00000000000RDDDDDDDDDDD&&&&&&RDRRRRRRRR##@@RR&F4&[email protected]@#0000000#&44&&4FD
000000000000000000DDDDDDD&&&DD&&&D&&R##@RRRRRRRRRRRRD&DRD&44DD&[email protected]#00000RDDRR4F4
000000000000000000RDDDDDDDRRDRDDD&[email protected]###@R&4&4444PP4DRRR&P22FF2FP&[email protected]
[email protected]@@R&&[email protected]&P2$33*33*4RRRDP23$*33$$**333*$$2D#@4DR
[email protected]#DDRRRRRD&D4*$$%%ff3F&DRRR2$1%$$%11ff%ll1l;'IRDF&R
[email protected]#0#00000R4444DRRRR&3llf33$32PDRR&3Ii(i%fIlI1Il!ii/' .FF4DR
0000000#0000000000#@@#0MM0M00#RP22*24DR4$l!!!I%*P4DDP31i===/lf1Illi((ii=;..*F4RR
000000000000000000#@@##[email protected]*$%*2PFflilllI1f3*2PF3fIi/=(lf$fIi/======;iF&P4R
000000000000000000##@##00000000&3f$2F2*1i!ll1$2P4RD&4P*$$%!ii!I!ii/=/=;;;(*&R4FR
000000000000000000#####00000000D%I3$$fflil!l1$3%3&RD2PP*$%1ll!lI1%f$3fI="1RRRRDR
000000000000000000#####00000000Rf1f%II1IIl!l!!1%ff$*FFFF*%((lf**F4&D&PPFf2RRRRRR
00000000000000000M#####0000000003!i11II11l!!!(ilIIl1f$f%I="=1FP4&@#R&DP22&[email protected]#@
0000000000000000000###0000000000#$i/iIIIl!!i=;"";===;""""";i12FFP4&4*4&*[email protected]@R
000000000000000000M000000000000000R4FF1l!i(=;"''"""""'...';/i$3$f$$33$$$4DRRRRRR
[email protected](/ii/=;;=ilI;"'...'=;I%[email protected]@[email protected]#0
000000000000000000000000000M00000000&11!=/li(i!I%%Ii;... .";"!I!!I1ff$*R0#@#0000
000000000000000000000000M0000M000000$lli=//=/i!lIi/l%I/""=//'=Iiiil%[email protected]#@00000
000000000000000000000000M0M0M00000MRl!!!/=;;/l%fl!lI%3233$ff%11II%%f*[email protected]##00000
00000000000000000M000000M0MM00000003=illl!!iI%11%%f%f$32FF22$1%ff$f2DD4PR0000000
00000000000000000M00M0#RRRRRRRRRRRPi/(lllI1I(=;=iI$2222FPFFP*$fff%FRR2322&R00000
00000000000000000MM00#RRD&&&&&444*l/(i!ll!i!==/(il%$33*2FFF23$ff*4DDDF33*22&0000
[email protected]@@@@@#&f!((/i!!!lI!i=;;/!l1f32*3$$$ff$2&[email protected]###@##00##000
0000000000000000#[email protected]@4F4R0R3!////(iii!!l%Ii=;"=l%f$333$ff%$4############00000#
0000000000000000000000#@@@#0Di/ii(=/(i!!!lI%%1!(iI%$**[email protected]
00000000000000000000000000000R3l((/((ii!lll!I%$3$f$$$$$3$f20M0000000000000000000
000000000000000000000000000000#2l///((!!l!!i!!1%f%f$3$f%%fR000000000000000000000
00000000000000#00000000000000000&l//(i!llllII1%%%1I1ff1I1&000000000000000000#00#
M00000000000000000000000000000000R3l!!llII111%%%%%%f$$f%2000000000000000000RR00#
0000#000000000000000000000000000000R*%1II111%%ffff$33fffR000000000000000000##00#
0####000000000000000000000000000000M0RF3ff$$$fff$$33$ff&00000000000#000000##000R
#00000000#00000000000000000000000000000R4FFFF22*****[email protected]&
00###[email protected]&&&4P*34#00000000000000000000000#R
00000####000000000000000000000000000000000000##@RRDDR00000000000000M0000000000##
00000000#000000000000000000000000000000000000000000000000000000000000000000000##
이 평균 이미지가 예술 컨버터 출력을 ASCII하는 것과 유사하다 : 여기에 일반 회색 - 투 - 문자 변환을 사용하여 내 테스트 이미지의 덤프입니다.
7 단계 : 사용할 문자열 목록을 찾으십시오.
8 단계 : 왼쪽 상단부터 시작하여 각 문자열의 이미지 범위를 테스트합니다. 가장 잘 맞는 것을 인쇄하고,이 문자열의 길이만큼 위치를 높이고, 완료 될 때까지 반복하십시오. 중복되지 않으려면이 시점에서 풀에서 문자열을 제거하십시오.
9 단계 : 이익! 커버리지 시험용
(source - dest)²
의 합을 사용했을 저급 = 더 - 캐릭터와 목적지 사이의 작은 차이.
나는 예쁜 라인 엔딩을 여기에서 고려하지 않았다. 나는 한 단어가 정확히 한 줄을 채우면 부정적인 보너스를주는 것으로 실험했지만 출력의 차이는 작았습니다. 더 큰 문자열 집합에서도 여전히 작동 할 수 있습니다.
문자열의 시퀀스을 테스트해볼 수있는 가능성이 있습니다. 즉, 단어 래핑 텍스트에서 최상의 중단을 결정하기 위해 고안 한 Donald Knuth와 매우 흡사 한 동적 프로그래밍 방식을 사용합니다.
감사합니다. 불행히도 제가 작업 한 프로젝트는 폐기되었습니다.이 글은 훌륭한 읽을 거리 였고, 저는 이것을 메모리 뱅크에 저장하려고합니다. 아마이 코드를 어딘가에 시험해 볼 수 있기를 바랍니다. – Caranicas