宅技术吧 关注:710贴子:699

【搬运】教你制作Word字符动画 Only My Word PHP源代码

只看楼主收藏回复

<?php
/*
图片转字符程序
时间有限,写的非常渣,高手请无视
主要利用了PHP的GD库,程序相当简单
由于我实在太懒的写文件输出部分,程序直接输出结果,请使用管道符写入文件
明日树袋熊 2009-12-12
*/
set_time_limit(0);     //设定程序不超时
//字符灰度矩阵。使用的字体是Courier New
$i=0;
$asciiGray[$i]= array ( "asciiNo" => 32    ,"gray"=>   0      ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 180   ,"gray"=>   642    ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 96    ,"gray"=>   644    ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 46    ,"gray"=>   730    ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 168   ,"gray"=>   746    ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 44    ,"gray"=>   979    ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 183   ,"gray"=>   1180   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 166   ,"gray"=>   1257   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 185   ,"gray"=>   1444   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 161   ,"gray"=>   1482   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 126   ,"gray"=>   1583   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 124   ,"gray"=>   1686   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 191   ,"gray"=>   1701   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 159   ,"gray"=>   1756   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 175   ,"gray"=>   1760   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 45    ,"gray"=>   1792   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 173   ,"gray"=>   1792   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 94    ,"gray"=>   1821   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 179   ,"gray"=>   1852   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 39    ,"gray"=>   1937   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 58    ,"gray"=>   1939   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 178   ,"gray"=>   1943   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 91    ,"gray"=>   2058   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 247   ,"gray"=>   2087   ); $i++;
$asciiGray[$i]= array ( "asciiNo" => 105   ,"gray"=>   2103   ); $i++;



1楼2009-12-14 19:39回复
    $asciiGray[$i]= array ( "asciiNo" => 125   ,"gray"=>   2117   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 123   ,"gray"=>   2122   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 33    ,"gray"=>   2126   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 172   ,"gray"=>   2181   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 108   ,"gray"=>   2209   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 92    ,"gray"=>   2228   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 47    ,"gray"=>   2240   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 236   ,"gray"=>   2292   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 49    ,"gray"=>   2339   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 106   ,"gray"=>   2370   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 239   ,"gray"=>   2400   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 186   ,"gray"=>   2448   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 40    ,"gray"=>   2541   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 41    ,"gray"=>   2549   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 114   ,"gray"=>   2600   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 73    ,"gray"=>   2635   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 43    ,"gray"=>   2684   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 176   ,"gray"=>   2707   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 238   ,"gray"=>   2753   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 215   ,"gray"=>   2755   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 42    ,"gray"=>   2793   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 177   ,"gray"=>   2810   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 116   ,"gray"=>   2817   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 170   ,"gray"=>   2872   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 61    ,"gray"=>   2923   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 76    ,"gray"=>   2964   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 122   ,"gray"=>   2980   ); $i++;
    $asciiGray[$i]= array ( "asciiNo" => 63    ,"gray"=>   2982   ); $i++;
    


    2楼2009-12-14 19:39
    回复
      $asciiGray[$i]= array ( "asciiNo" => 99    ,"gray"=>   3001   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 231   ,"gray"=>   3020   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 55    ,"gray"=>   3032   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 60    ,"gray"=>   3101   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 62    ,"gray"=>   3102   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 117   ,"gray"=>   3128   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 181   ,"gray"=>   3162   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 205   ,"gray"=>   3279   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 204   ,"gray"=>   3286   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 74    ,"gray"=>   3334   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 121   ,"gray"=>   3346   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 110   ,"gray"=>   3353   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 111   ,"gray"=>   3370   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 207   ,"gray"=>   3379   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 102   ,"gray"=>   3474   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 163   ,"gray"=>   3484   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 50    ,"gray"=>   3507   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 118   ,"gray"=>   3543   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 115   ,"gray"=>   3562   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 34    ,"gray"=>   3574   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 89    ,"gray"=>   3614   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 162   ,"gray"=>   3630   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 51    ,"gray"=>   3646   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 67    ,"gray"=>   3696   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 199   ,"gray"=>   3717   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 206   ,"gray"=>   3729   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 250   ,"gray"=>   3750   ); $i++;
      $asciiGray[$i]= array ( "asciiNo" => 249   ,"gray"=>   3759   ); $i++;
      


      3楼2009-12-14 19:39
      回复
        $asciiGray[$i]= array ( "asciiNo" => 97    ,"gray"=>   3792   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 38    ,"gray"=>   3818   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 53    ,"gray"=>   3819   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 84    ,"gray"=>   3860   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 120   ,"gray"=>   3860   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 252   ,"gray"=>   3874   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 90    ,"gray"=>   3936   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 253   ,"gray"=>   3962   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 37    ,"gray"=>   3974   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 104   ,"gray"=>   3989   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 243   ,"gray"=>   3990   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 242   ,"gray"=>   3991   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 167   ,"gray"=>   4019   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 255   ,"gray"=>   4088   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 246   ,"gray"=>   4116   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 101   ,"gray"=>   4137   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 107   ,"gray"=>   4169   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 52    ,"gray"=>   4172   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 164   ,"gray"=>   4202   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 251   ,"gray"=>   4216   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 221   ,"gray"=>   4246   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 70    ,"gray"=>   4248   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 103   ,"gray"=>   4298   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 80    ,"gray"=>   4309   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 48    ,"gray"=>   4328   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 85    ,"gray"=>   4333   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 83    ,"gray"=>   4360   ); $i++;
        $asciiGray[$i]= array ( "asciiNo" => 68    ,"gray"=>   4389   ); $i++;
        


        4楼2009-12-14 19:39
        回复
          $asciiGray[$i]= array ( "asciiNo" => 81    ,"gray"=>   4403   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 79    ,"gray"=>   4414   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 225   ,"gray"=>   4425   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 224   ,"gray"=>   4428   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 112   ,"gray"=>   4443   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 113   ,"gray"=>   4452   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 171   ,"gray"=>   4457   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 86    ,"gray"=>   4459   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 187   ,"gray"=>   4465   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 244   ,"gray"=>   4468   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 245   ,"gray"=>   4474   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 71    ,"gray"=>   4536   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 57    ,"gray"=>   4539   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 228   ,"gray"=>   4541   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 54    ,"gray"=>   4570   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 182   ,"gray"=>   4640   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 100   ,"gray"=>   4661   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 189   ,"gray"=>   4663   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 69    ,"gray"=>   4668   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 36    ,"gray"=>   4704   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 98    ,"gray"=>   4710   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 223   ,"gray"=>   4727   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 109   ,"gray"=>   4761   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 233   ,"gray"=>   4769   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 232   ,"gray"=>   4771   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 72    ,"gray"=>   4780   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 222   ,"gray"=>   4787   ); $i++;
          $asciiGray[$i]= array ( "asciiNo" => 65    ,"gray"=>   4788   ); $i++;
          


          5楼2009-12-14 19:39
          回复
            $asciiGray[$i]= array ( "asciiNo" => 88    ,"gray"=>   4792   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 119   ,"gray"=>   4829   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 165   ,"gray"=>   4844   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 229   ,"gray"=>   4853   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 227   ,"gray"=>   4885   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 226   ,"gray"=>   4888   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 235   ,"gray"=>   4909   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 218   ,"gray"=>   4960   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 217   ,"gray"=>   4972   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 254   ,"gray"=>   5006   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 248   ,"gray"=>   5020   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 188   ,"gray"=>   5026   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 211   ,"gray"=>   5045   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 210   ,"gray"=>   5058   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 56    ,"gray"=>   5062   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 220   ,"gray"=>   5079   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 75    ,"gray"=>   5094   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 82    ,"gray"=>   5147   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 214   ,"gray"=>   5160   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 208   ,"gray"=>   5172   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 64    ,"gray"=>   5202   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 234   ,"gray"=>   5225   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 201   ,"gray"=>   5302   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 200   ,"gray"=>   5305   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 66    ,"gray"=>   5349   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 169   ,"gray"=>   5410   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 203   ,"gray"=>   5414   ); $i++;
            $asciiGray[$i]= array ( "asciiNo" => 193   ,"gray"=>   5422   ); $i++;
            


            6楼2009-12-14 19:39
            回复
              $asciiGray[$i]= array ( "asciiNo" => 219   ,"gray"=>   5429   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 35    ,"gray"=>   5455   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 192   ,"gray"=>   5472   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 190   ,"gray"=>   5473   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 240   ,"gray"=>   5505   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 212   ,"gray"=>   5511   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 213   ,"gray"=>   5518   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 196   ,"gray"=>   5604   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 78    ,"gray"=>   5708   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 230   ,"gray"=>   5718   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 202   ,"gray"=>   5767   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 174   ,"gray"=>   5829   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 197   ,"gray"=>   5860   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 194   ,"gray"=>   5897   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 195   ,"gray"=>   5914   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 77    ,"gray"=>   6138   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 198   ,"gray"=>   6324   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 216   ,"gray"=>   6416   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 209   ,"gray"=>   6787   ); $i++;
              $asciiGray[$i]= array ( "asciiNo" => 87    ,"gray"=>   6902   ); $i++;
              for ($pi=0;$pi<685;$pi++) {//685是图片总量,按实际情况自己修改
                   $imgBuff=imagecreatefromjpeg("only/$pi.jpg");//导入图片,图片路径,文件名应从0开始
                   $imgX= imagesx($imgBuff);//获得图片高度
                   $imgY= imagesy($imgBuff);//获得图片宽度
                   imagefilter($imgBuff, IMG_FILTER_GRAYSCALE);//图片转灰度
                   $freamchr="";
                   for ($y=0;$y<$imgY;$y++) {
                       for ($x=0;$x<$imgX;$x++) {
                           $picColor= imagecolorsforindex ($imgBuff,imagecolorat($imgBuff,$x,$y));//获得单点颜色
                           $pixGray=255-$picColor[red];//计算灰度值
              


              7楼2009-12-14 19:39
              回复

                             $picGrayS=$pixGray*27.06;
                             $last=$asciiGray[0];
                             //转换近似字符灰度值
                             for ($ai=0;$ai<184;$ai++) {
                                 if ($asciiGray[$ai][gray]>=$picGrayS) {
                                     if(($asciiGray[$ai][gray]-$picGrayS)<=$picGrayS-$last[gray]) {
                                         $pixChr=$asciiGray[$ai][asciiNo];
                                     }else {
                                         $pixChr=$last[asciiNo];
                                     }
                                     break;
                                 }
                                 $last=$asciiGray[$ai];
                             }
                             $freamchr=$freamchr.chr($pixChr);
                         }
                         $freamchr=$freamchr."\r\n";
                     }
                     imageDestroy($imgBuff);
                     echo $freamchr;
                     echo "PAGEDONE\r\n";//分页标记
                }
                ?>
                //下面是字符灰度获取程序,其实结果上面程序有了,没这源码也无所谓,注释懒的写了
                <?php
                set_time_limit(0);
                $fnt = "c:/windows/fonts/COUR.TTF";      
                for($c=32;$c<256;$c++) {
                     $word=imagecreate(160,220);
                     $bg=imagecolorallocate($word,127,127,127);
                     $textcolor=imagecolorallocate($word,0,0,0);
                     $motto=chr($c);
                     imageTTFText($word,200,0,0,210,$textcolor,$fnt,$motto);
                     $pixGray=0;
                     for($y=0;$y<200;$y++) {
                         for($x=0;$x<160;$x++) {
                             $dotColor= imagecolorsforindex ($word,imagecolorat($word,$x,$y));
                             if($dotColor[red]!=127) {
                                 $pixGray++;
                             }
                         }
                     }
                     echo $c.",".$pixGray."\r\n";
                     imageDestroy($word);     
                }
                ?>
                


                8楼2009-12-14 19:39
                收起回复
                  • 117.43.248.*
                  就没有详细点的吗?


                  9楼2009-12-20 15:50
                  回复
                    老大 你弄个你做好的发上来看看啊


                    10楼2009-12-27 00:04
                    回复
                      吾辈一点也不会PHP


                      IP属地:广东12楼2010-04-19 22:14
                      回复
                        • 125.75.235.*
                        在WORD中制作动画图片有没有更简单的方法,


                        13楼2010-06-23 15:51
                        回复
                          图片转字符程序
                          主要利用了PHP的GD库,程序相当简单
                          由于我实在太懒的写文件输出部分,程序直接输出结果,请使用管道符写入文件
                          这什么意思啊!求解!


                          IP属地:浙江14楼2011-02-16 13:04
                          回复
                            不懂,我无解


                            IP属地:安徽16楼2012-05-28 17:55
                            回复