亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

不用GD庫生成當前時間的PNG格式圖象的程序

2019-11-18 19:56:24
字體:
來源:轉載
供稿:網友

該程序是不用GD庫可以生成當前時間的PNG格式圖象,給人大開眼界,很有參考價值. teaman整理

<?php
       
    function set_4pixel($r, $g, $b, $x, $y)
    {
    global $sx, $sy, $pixels;

    $ofs = 3 * ($sx * $y + $x);
    $pixels[$ofs] = chr($r);
    $pixels[$ofs + 1] = chr($g);
    $pixels[$ofs + 2] = chr($b);
    $pixels[$ofs + 3] = chr($r);
    $pixels[$ofs + 4] = chr($g);
    $pixels[$ofs + 5] = chr($b);
    $ofs += 3 * $sx;
    $pixels[$ofs] = chr($r);
    $pixels[$ofs + 1] = chr($g);
    $pixels[$ofs + 2] = chr($b);
    $pixels[$ofs + 3] = chr($r);
    $pixels[$ofs + 4] = chr($g);
    $pixels[$ofs + 5] = chr($b);
    }
    //生成數字圖象的函數    
    function draw2digits($x, $y, $number)
    {
    draw_digit($x, $y, (int) ($number / 10));
    draw_digit($x + 11, $y, $number % 10);
    }
        
    function draw_digit($x, $y, $digit)
    {
    global $sx, $sy, $pixels, $digits, $lines;
            
    $digit = $digits[$digit];
    $m = 8;
    for ($b = 1, $i = 0; $i < 7; $i++, $b *= 2) {
        if (($b & $digit) == $b) {
        $j = $i * 4;
        $x0 = $lines[$j] * $m + $x;
        $y0 = $lines[$j + 1] * $m + $y;
        $x1 = $lines[$j + 2] * $m + $x;
        $y1 = $lines[$j + 3] * $m + $y;
        if ($x0 == $x1) {
            $ofs = 3 * ($sx * $y0 + $x0);
            for ($h = $y0; $h <= $y1; $h++, $ofs += 3 * $sx) {
            $pixels[$ofs] = chr(0);
            $pixels[$ofs + 1] = chr(0);
            $pixels[$ofs + 2] = chr(0);
            }
        } else {
            $ofs = 3 * ($sx * $y0 + $x0);
            for ($w = $x0; $w <= $x1; $w++) {
            $pixels[$ofs++] = chr(0);
            $pixels[$ofs++] = chr(0);
            $pixels[$ofs++] = chr(0);
            }
        }
        }
    }
    }
        
    //將文字加入到圖象中 
    function add_chunk($type)
    {
    global $result, $data, $chunk, $crc_table;

    // chunk :為層
    // length: 4 字節: 用來計算 chunk 
    // chunk type: 4 字節
    // chunk data: length bytes
    // CRC: 4 字節:  循環冗余碼校驗
        
    // copy data and create CRC checksum
    $len = strlen($data);
    $chunk = pack("c*", ($len >> 24) & 255,
        ($len >> 16) & 255,
        ($len >> 8) & 255,
        $len & 255);
    $chunk .= $type;
    $chunk .= $data;

    // calculate a CRC checksum with the bytes chunk[4..len-1]
    $z = 16777215;
    $z |= 255 << 24;
    $c = $z;
    for ($n = 4; $n < strlen($chunk); $n++) {
        $c8 = ($c >> 8) & 0xffffff;
        $c = $crc_table[($c ^ ord($chunk][$n])) & 0xff] ^ $c8;
    }
    $crc = $c ^ $z;

    $chunk .= chr(($crc >> 24) & 255);
    $chunk .= chr(($crc >> 16) & 255);
    $chunk .= chr(($crc >> 8) & 255);
    $chunk .= chr($crc & 255);

    // 將結果加到$result中
    $result .= $chunk;
    }


    //主程序

    $sx = 80;
    $sy = 21;
    $pixels = "";
            
    // 填充
    for ($h = 0; $h < $sy; $h++) {
    for ($w = 0; $w < $sx; $w++) {
        $r = 100 / $sx * $w + 155;
        $g = 100 / $sy * $h + 155;
        $b = 255 - (100 / ($sx + $sy) * ($w + $h));
        $pixels .= chr($r);
        $pixels .= chr($g);
        $pixels .= chr($b);
    }
    }
        
    $date = getdate();
    $s = $date["seconds"];
    $m = $date["minutes"];
    $h = $date["hours"];
    $digits = array(95, 5, 118, 117, 45, 121, 123, 69, 127, 125);
    $lines = array(1, 1, 1, 2, 0, 1, 0, 2, 1, 0, 1, 1, 0, 0, 0, 1, 0, 2, 1, 2, 0, 1, 1, 1, 0, 0, 1, 0);
        
    draw2digits(4, 2, $h);
    draw2digits(30, 2, $m);
    draw2digits(56, 2, $s);
    set_4pixel(0, 0, 0, 26, 7);
    set_4pixel(0, 0, 0, 26, 13);
    set_4pixel(0, 0, 0, 52, 7);
    set_4pixel(0, 0, 0, 52, 13);

    // 創建循環冗余碼校驗表
    $z = -306674912;  // = 0xedb88320
    for ($n = 0; $n < 256; $n++) {
        $c = $n;
        for ($k = 0; $k < 8; $k++) {
            $c2 = ($c >> 1) & 0x7fffffff;
            if ($c & 1) $c = $z ^ ($c2); else $c = $c2;
        }
        $crc_table[$n] = $c;
    }

    // PNG file signature
    $result = pack("c*", 137,80,78,71,13,10,26,10);
        
    // IHDR chunk data:
    //   width:              4 bytes
    //   height:             4 bytes
    //   bit depth:          1 byte (8 bits per RGB value)
    //   color type:         1 byte (2 = RGB)
    //   comPRession method: 1 byte (0 = deflate/inflate)
    //   filter method:      1 byte (0 = adaptive filtering)
    //   interlace method:   1 byte (0 = no interlace)
    $data = pack("c*", ($sx >> 24) & 255,
    ($sx >> 16) & 255,
    ($sx >> 8) & 255,
    $sx & 255,
    ($sy >> 24) & 255,
    ($sy >> 16) & 255,
    ($sy >> 8) & 255,
    $sy & 255,
    8,
    2,
    0,
    0,
    0);
    add_chunk("IHDR");

    // 以下不敢亂翻譯,請自行參考
    //    scanline:
    //        filter byte: 0 = none
    //        RGB bytes for the line
    //    the scanline is compressed with "zlib", method 8 (RFC-1950):
    //        compression method/flags code: 1 byte ($78 = method 8, 32k window)
    //        additional flags/check bits:   1 byte ($01: FCHECK = 1, FDICT = 0, FLEVEL = 0)
    //        compressed data blocks:        n bytes
    //            one block (RFC-1951):
    //                bit 0: BFINAL: 1 for the last block
    //                bit 1 and 2: BTYPE: 0 for no compression
    //                next 2 bytes: LEN (LSB first)
    //                next 2 bytes: one's complement of LEN
    //                LEN bytes uncompressed data
    //        check value:  4 bytes (Adler-32 checksum of the uncompressed data)
    //
    $len = ($sx * 3 + 1) * $sy;
    $data = pack("c*", 0x78, 0x01,
        1,
    $len & 255,
    ($len >> 8) & 255,
    255 - ($len & 255),
    255 - (($len >> 8) & 255));
    $start = strlen($data);
    $i2 = 0;
    for ($h = 0; $h < $sy; $h++) {
    $data .= chr(0);
    for ($w = 0; $w < $sx * 3; $w++) {
        $data .= $pixels[$i2++];
    }
    }


    // calculate a Adler32 checksum with the bytes data[start..len-1]
    $s1 = 1;
    $s2 = 0;
    for ($n = $start; $n < strlen($data); $n++) {
    $s1 = ($s1 + ord($data[$n])) % 65521;
    $s2 = ($s2 + $s1) % 65521;
    }
    $adler = ($s2 << 16) | $s1;

    $data .= chr(($adler >> 24) & 255);
    $data .= chr(($adler >> 16) & 255);
    $data .= chr(($adler >> 8) & 255);
    $data .= chr($adler & 255);
    add_chunk("IDAT");

    // IEND: marks the end of the PNG-file
    $data = "";
    add_chunk("IEND");

    // 列印圖象
    
    echo($result);
?>

//如何調用,其實很簡單,將上面存為Timeimg.php
//然后新建一個頁面如下:

<html>
    <head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html">
    </head>
    <body>
    <img src="Timeimg.php">  //以圖象連接方式調用PHP文件
</body>
</html> 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
大荫蒂欧美视频另类xxxx| 日韩欧美在线视频日韩欧美在线视频| 日韩国产激情在线| 国产免费久久av| 欧美一级bbbbb性bbbb喷潮片| 色视频www在线播放国产成人| 国产精品9999| 中文字幕视频一区二区在线有码| 欧美性xxxxxx| 欧美日韩亚洲一区二区| 国产激情久久久| 国产一区视频在线| 欧美一级黑人aaaaaaa做受| 中文字幕国产亚洲2019| 日韩成人久久久| 久久久久久久一区二区三区| 亚洲免费一级电影| 2018日韩中文字幕| 国产99久久久欧美黑人| 黑人巨大精品欧美一区免费视频| 久久国产精品久久久久久| 日韩一区二区三区在线播放| 亚洲第一av网| 国产精品久久久精品| 久久久国产91| 国产精品一区二区三区久久久| 欧美wwwwww| 丝袜美腿精品国产二区| 国产成人久久久精品一区| 国产suv精品一区二区| 亚洲精品电影网| 97精品伊人久久久大香线蕉| 精品一区二区三区四区在线| 国内精品视频一区| 国产精品第3页| 福利视频一区二区| 川上优av一区二区线观看| 亚洲区bt下载| 成人激情视频在线播放| 中文字幕日韩av| 91美女高潮出水| 粗暴蹂躏中文一区二区三区| 亚洲精品天天看| 欧美贵妇videos办公室| 精品国内自产拍在线观看| 欧美怡春院一区二区三区| 久久69精品久久久久久久电影好| 国产一区二区免费| 国产成人亚洲精品| 国产精品91在线观看| 最新国产精品亚洲| 日韩av一卡二卡| 日韩精品中文字幕在线观看| 91九色在线视频| 国产精品久久视频| 在线电影中文日韩| 国产99久久精品一区二区永久免费| 国产精品18久久久久久首页狼| 国产亚洲xxx| 在线国产精品视频| 成人两性免费视频| 亚洲一区二区三区777| 亚洲欧美激情四射在线日| 91在线观看免费高清完整版在线观看| 国产一区二区日韩| 欧美国产极速在线| 国产精品欧美一区二区| 97在线精品视频| 精品精品国产国产自在线| 久久国产精品电影| 色婷婷久久一区二区| 亚洲视频网站在线观看| 亚洲精品99久久久久| 久久躁狠狠躁夜夜爽| 亚洲精美色品网站| 欧美日韩在线看| 欧美一区二区三区免费观看| 欧美黑人国产人伦爽爽爽| 国产精品久久久久久久久粉嫩av| 97不卡在线视频| 大量国产精品视频| 欧美日韩国产精品| 国产日韩专区在线| 国产不卡在线观看| 日韩美女在线看| 91最新在线免费观看| 亚洲社区在线观看| 亚洲国产成人精品女人久久久| 欧美激情在线播放| 欧美极品少妇xxxxⅹ裸体艺术| 日韩中文在线中文网三级| 欧美一级视频一区二区| 国外成人在线直播| 国产在线一区二区三区| xxav国产精品美女主播| 国产成人91久久精品| 91精品在线播放| 欧美理论电影网| 久久亚洲精品小早川怜子66| 亚洲欧洲日本专区| 精品久久久999| 91香蕉嫩草神马影院在线观看| 亚洲网站视频福利| 国产亚洲一区二区精品| 欧美中文字幕精品| 久久亚洲国产成人| 国产一区二区成人| 国产成人精品久久| 欧美另类精品xxxx孕妇| 亚洲一区二区精品| 91九色综合久久| 成人天堂噜噜噜| 国产成人+综合亚洲+天堂| 国产欧美日韩精品在线观看| 91亚洲精品一区| 色婷婷综合久久久久中文字幕1| 免费91麻豆精品国产自产在线观看| 亚洲精品欧美极品| 日韩国产欧美精品一区二区三区| 欧美区在线播放| 激情成人中文字幕| 国产精品电影观看| 久久久成人av| 啪一啪鲁一鲁2019在线视频| 国产美女精品视频| 欧美日韩电影在线观看| 日韩av电影中文字幕| 亚洲国产精品久久久| 中文字幕亚洲一区二区三区五十路| 少妇高潮 亚洲精品| 91久久国产精品| 国产成人精品久久| 久久天天躁日日躁| 神马国产精品影院av| 国产精品jizz在线观看麻豆| 日韩欧美精品在线观看| 欧美精品一本久久男人的天堂| 久久频这里精品99香蕉| 精品久久久91| 正在播放国产一区| 精品国产美女在线| 亚洲国产成人精品女人久久久| 国产在线观看精品一区二区三区| 亚洲一区av在线播放| 亚洲国产成人在线播放| 亚洲自拍欧美另类| 黄色成人av在线| 在线午夜精品自拍| 精品视频一区在线视频| 国产主播精品在线| 精品国产区一区二区三区在线观看| 国产成人高清激情视频在线观看| 久久不射电影网| 91大神在线播放精品| 中文字幕亚洲欧美一区二区三区| 97免费中文视频在线观看| 色综合久久久久久中文网| 久久久国产一区二区| 亚洲精品日产aⅴ| 九九精品视频在线观看| 国产精品久久久91| 国产日韩综合一区二区性色av| 亚洲第一福利网| 亚洲精品资源美女情侣酒店|