"\n","\r"=>"\n")); # ¹®ÀÚ¿­($t)À» ÇÑ ±ÛÀÚ¾¿ °Ë»ç... while($i ÀÌ °æ¿ì 11111110ÀÌ »ðÀԵǸç # 2: O.....O. ÇØ´çÇÏ´Â °ªÀº 254ÀÌ´Ù. # ============ # 11: O.....O. --> ¸¶Âù°¡Áö·Î 10000010ÀÌ »ðÀԵǸç # 12: OOOOOOO. ÇØ´çÇÏ´Â °ªÀº 130ÀÌ´Ù. # 13: ........ --> ÀÌ°Ç ¸»ÇÒ °Íµµ ¾øÀÌ 0 # ÀÌ ¶§ $j%11-1Àº $j°¡ 1/12°¡ ¾Æ´Ò °æ¿ì¸¦ ÀǹÌÇÏ°í, # $j%13Àº $j°¡ 0/13ÀÌ ¾Æ´Ò °æ¿ì¸¦ ÀǹÌÇÑ´Ù. # 130/0/254´Â °¢ °æ¿ì¿¡ ÇØ´çÇÏ´Â ÀÌÁø¼ö °ªÀÌ´Ù. -_-; # ½ÇÁ¦ À̹ÌÁö ¼¼·Î Å©±â¸¦ ¾Ë·Á¸é 14¸¦ ´õÇØ¾ß ÇÑ´Ù. -_- $h+=14; # °¢ ÁÙ º°·Î °¡·Î ±æÀ̸¦ Àç¼­ °¡Àå Å« °¡·Î ±æÀ̸¦ À̹ÌÁö °¡·Î ±æÀÌ·Î Àâ´Â´Ù. for($i=0;$i<$h;$w<($v=strlen($r[$i++]))&&($w=$v)); # ¹°·Ð ÀÌ°Ç for($i=0;$i<$h;$i++) { $v=strlen($r[$i]); if($w<$v) $w=$v; } ¿Í °°´Ù. # ºñÆ® µ¥ÀÌÅ͸¦ ¹ÙÀ̳ʸ®·Î ¹Ù²Ù´Â °úÁ¤... for($i=0;$i<$h;$i++,$d.=chr($c<<((~$j+1)&7))) # ÇöÀç ó¸®ÁßÀÎ scanlineÀ» ¹ÙÀ̳ʸ®·Î ¹Ù²Û´Ù for($c=$j=0;$j<$w; # $c´Â 8¹ø ¹Ýº¹Çϸ鼭 ºñÆ® µ¥ÀÌÅ͸¦ ÀÐ¾î µéÀÌ°í # 8¹ø ¹Ýº¹ÇÑ µÚ¿¡ ¹Ù·Î ´ÙÀ½ ¹®Àå¿¡ ÀÇÇØ ÀúÀåµÈ´Ù. $c=$c*2+$r[$i]{$j++}) # $j=0,8,16,...ÀÏ ¶§ ÇöÀç $c¸¦ ÀúÀåÇÑ´Ù. # ¿Ö 7,15,23...ÀÌ ¾Æ´Ï³Ä Çϸé... png°¡ Á» ÀÌ»ó¾ß¸©ÇÑ ¹æ¹ýÀ» ½á¼­ ±×·±´Ù. # ¸ðµç scanline ¾Õ¿¡´Â filter typeÀ» ³ªÅ¸³»´Â ¹ÙÀÌÆ®°¡ Çϳª µé¾î °¡´Âµ¥ # ¿©±â¼­´Â ó¸®ÇÏÁö ¾ÊÀ¸¹Ç·Î 0ÀÌ µÇ¾î¾ß ÇÑ´Ù. # µû¶ó¼­ $j=0ÀÏ ¶§ Ãß°¡µÇ´Â ¹ÙÀÌÆ®´Â ¹°·Ð \0ÀÌ µÈ´Ù. # ÁÖ¸ñÇÒ °ÍÀº ÀÌ ´öºÐ¿¡ $j°¡ 8ÀÇ ¹è¼ö¶óµµ ¸¶Áö¸·¿¡ ÇÑ ¹ÙÀÌÆ®°¡ ÀúÀå ¾È µÈ´Ù´Â °ÍÀÌ´Ù-_- if($j%8<1){$d.=chr($c);$c=0;} # ¿ø·¡´Â ÀÌ µÚ¿¡ $d.=chr($c<<((~$j+1)&7));ÀÌ µé¾î °£´Ù. # ¸¸¾à $j(Áï $w)°¡ 8ÀÇ ¹è¼ö¿´´Ù¸é ÇöÀç »óÅ¿¡¼­ ±×³É Áý¾î ³ÖÀ¸¸é µÈ´Ù. # ¾Æ´Ï¶ó¸é, ¾ÕÀ¸·Î 8-($j%8)¹ø ¹Ýº¹ÇØ¾ß ÇϹǷΠ±×¸¸Å­ shiftÇØ ÁØ´Ù. # (~$j+1)&7À̶ó´Â °ÍÀº ÀÌ·¯ÇÑ °æ¿ì¸¦ ´Ù °í·ÁÇÑ °£´ÜÇÑ ½Ä-_-À¸·Î # Á÷Á¢ Å×½ºÆ®ÇØ º¸¸é ´ÙÀ½ °ªÀ» ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. # $j: 0 1 2 3 4 5 6 7 # ½¬ÇÁÆ® Ƚ¼ö: 0 7 6 5 4 3 2 1 # µ¥ÀÌÅÍ ¾ÐÃà (Á¤¸»?) # $o: µÚ¿¡ ³ª¿Â´Ù... # $r: ¾ÐÃà °á°ú¸¦ ºñÆ® µ¥ÀÌÅÍ·Î Áý¾î ³Ö´Â´Ù. (ºñÆ® ¿¬»êÇϱ⠳ʹ« ±ÍÂú¾ÒÀ½) # $l: ´ç¿¬È÷ ¾ÐÃàÇÒ µ¥ÀÌÅÍ ±æÀÌ $o=$r='';$l=strlen($d); # ÀÌ for ¹®ÀÌ ÇÑ ¹ø µ¹¸é 4096¹ÙÀÌÆ®°¡ ó¸®µÈ °ÍÀÌ´Ù. for($i=0;$i<$l;$r.='0000000'){ # À̹ø for ¹®¿¡¼­ ó¸®ÇÒ ¹®ÀÚµéÀ» ±Ü¾î¼­ $s¿¡ ÀúÀåÇÑ´Ù. # 4096¹ÙÀÌÆ®¸¦ ±Ü¾î ³»Áö¸¸ ½ÇÁ¦·Î´Â ´õ ÀûÀ» ¼öµµ ÀÖ´Ù. $s=substr($d,$i,4096); # $i¿¡ 4096À» ´õÇÏ°í $l°ú ºñ±³Çؼ­ ¸¶Áö¸· ·çÇÁÀÎ Áö È®ÀÎ. # ±× °á°ú °¡Áö°í Çì´õºñÆ® 3ºñÆ®¸¦ ³Ö¾î ÁØ´Ù. # 01(10ÀÌ ¾Æ´Ñ ÀÌÀ¯´Â µÚÁýÇô ÀúÀåµÇ±â ¶§¹®¿¡)Àº # fixed huffman codingÀ» ³ªÅ¸³½´Ù. $r.=($i+=4096)<$l?'010':110; # (°¡Â¥) ¾ÐÃà °úÁ¤ for($j=0;$j>8;$n--;$r.=($c>>$n)&1); } # Adler-32 üũ¼¶ ±¸ÇÏ´Â °úÁ¤... # 4096¹ÙÀÌÆ® ±âÁØÀ¸·Î Áý¾î ³Ö´Â ÀÌÀ¯´Â ¸Å¿ì °£´ÜÇÏ´Ù. # ¾ÐÃàÇÒ ¹®ÀÚ¿­ÀÌ ÁË´Ù \xff·Î¸¸ µÇ¾î ÀÖ´Ù°í °¡Á¤Çϸé, # 410x¹ÙÀÌÆ®°¡ ³Ñ¾î °¡¸é ÀÌ °ªÀÌ signed int ÇѰ踦 ³Ñ¾î °¡¼­ ºÎÁ¤È®ÇÏ°Ô µÈ´Ù; # (¹°·Ð 4096À̶ó°í ÇÑ °Ç ±ò²ûÇÏ°Ô 0x1000 ³ª¿À°Ô ÇÏ·Á°í...) $a%=65521;$g%=65521; # ¿ø·¡ ÀÌ µÚ¿¡´Â $r.='0000000'; ÀÌ ÀÖ¾î¾ß Çϴµ¥... # ÀÌ °ªÀº fixed huffman coding¿¡¼­ 256À» °¡¸®Å°°í, # ÀÌ Äڵ尪Àº ¹Ù·Î ÇØ´ç ºí·ÏÀÇ ³¡À» ³ªÅ¸³½´Ù. } # ºñÆ® ¹®ÀÚ¿­À» ¶Ç ´Ù½Ã ¹ÙÀ̳ʸ®·Î ¹Ù²Ù´Â °úÁ¤... ±ÍÂú´Ù ±ÍÂú¾Æ... $l=strlen($r); for($i=0;$i<$l;$o.=chr($c)) # 8¹ø ¹Ýº¹Çϸ鼭 $c¿¡´Ù°¡ °ªµéÀ» ÀúÀå... # $c=$c*2+$r{$i++}°¡ ¾Æ´Ï¶ó´Â °É À¯ÀÇ. # (png¿¡¼­´Â MSB->LSB ¼ø¼­´ë·Î Áý¾î ³ÖÁö¸¸ zlibÀº °Å²Ù·Î Áý¾î ³Ö´Â´Ù. Á¦±æ;) for($c=$j=0;$i<$l&&$j<8;$c|=$r{$i++}<<$j++); # ºñ·Î¼Ò Çì´õ Ãâ·Â header('Content-Type:image/png'); # ¹è°æ»ö ó¸®: # - ÀÏ´Ü ÀÔ·Â ¾È µÈ °æ¿ì ±âº» rgb °ªÀ» ³Ö°í # - µÚ¿¡ ¾ËÆÄ°ªÀ» ´Ù½Ã ÇÔ²² ³Ö´Â´Ù. # (ÀÌ·¸°Ô ÇÑ ÀÌÀ¯´Â ÀÔ·ÂµÈ °ª ¼ö°¡ 3/4ÀÏ °æ¿ì¸¦ ¸ðµÎ ó¸®Çϱâ À§Çؼ­ÀÌ´Ù) # ¹°·Ð, 4°³ ÀԷµǾúÀ» ¶§´Â µÚ¿¡ ,0ÀÌ ´Ù½Ã ºÙ°ÚÁö¸¸ ó¸®ÇÏÁö ¾ÊÀ¸´Ï ¾È½É :) $b=$b?$b:'255,255,255';$b=split(',',"$b,0"); # ¸¶Âù°¡Áö... ±âº»°ªÀÌ 255,255,255,0ÀÌ ¾Æ´Ï¶ó 0,0,0,255¶ó´Â °Í¸¸ »©°í; $f=$f?$f:'0,0,0';$f=split(',',"$f,255"); # Á¤¸»·Î Ãâ·Â echo"\x89PNG\r\n\x1a\n". # Çì´õ 8¹ÙÀÌÆ® # IHDR chunk: ¹«Á¶°Ç indexed-color, bit depth´Â 1bit.. T(IHDR,pack(NN,$w,$h)."\1\3\0\0\0"). # PLTE chunk: »ö±òÀÌ µÎ °³´Ï±î ±×´ë·Î Áý¾î ³Ö´Â´Ù. # entry 0Àº ¹è°æ»ö, entry 1Àº Àü°æ»ö T(PLTE,pack(CCCCCC,$b[0],$b[1],$b[2],$f[0],$f[1],$f[2])). # tRNS chunk: Åõ¸í°ª... ¸¶Âù°¡Áö ¼ø¼­´ë·Î ³Ö´Â´Ù. T(tRNS,pack(CC,$b[3],$f[3])). # IDAT chunk: deflate ¾ÐÃàÀº ³¡³µÀ¸´Ï±î ÀÌÁ¦ zlib Æ÷¸Ë´ë·Î # ¾Õ¿¡ Çü½Ä, µÚ¿¡ üũ¼¶ ºÙÀÌ¸é µÈ´Ù. T(IDAT,"\x78\1$o".pack(nn,$g,$a)). # IEND chunk: ¿©±â¿¡ ¹¹ ¶Ç µé¾î °¡´Â °Ô Àְڴ°¡ -_-; T(IEND,''); # Èıâ: pngÀÇ ¾Ë ¼ö ¾ø´Â ±¸Á¶ ´öºÐ¿¡ Çì¸ÌÁö¸¸ ´öºÐ¿¡ png¸¦ Àß ÀÍÇûÀ¸´Ï ¹¹...;; # º°·Î ÇÒ ¸» ¾øÀ½. ¾Æ. ½Ã°£ ³ª¸é ij¸¯ÅÍ ¸ð¾çÀ¸·Î ¸¸µé°í ½Í´Ù. ?>