详解PHP扫描图片转点阵、二维码转点阵【PHP教程】

!
也想出现在这里? 联系我们
信息

详解PHP扫描图片转点阵、二维码转点阵,第1张

概述详解PHP扫描图片转点阵、二维码转点阵 本篇文章给大家介绍PHP扫描图片转点阵 二维码转点阵,有一定的参考价值,需要的朋友可以参考一下,希望对大家有所帮助。

    /**     * 图片转点阵(黑白)     * @param string $imgPath     * @return array     */    function imgTolattice(string $imgPath): array    {        $size = getimagesize($imgPath);// 得到图片的信息        $im = imagecreatefrompng($imgPath);// 創建一張圖片        // 储存二进制数组        $lattice = [];        $white = [            'red' => 255,            'green' => 255,            'blue' => 255,            'Alpha' => 0,        ];        for ($i = 0; $i < $size[1]; ++ $i) {            $lattice[$i] = '';            for ($j = 0; $j < $size[0]; ++$j) {                $rgb = imagecolorat($im, $j, $i);          //取得某像素的颜色索引值                $rgbarr = imagecolorsforindex($im, $rgb);                if ($white === $rgbarr){                    $lattice[$i] .= 0;                }else{                    $lattice[$i] .= 1;                }            }        }        return [$lattice, $size];    }

注解:

$rgbarr = imagecolorsforindex($im, $rgb);

这里返回一个RGB数组,跟$white数组一样,我因为二维码只有黑白,所以这里只做了黑白判断,黑就是1,白就是0,如果你的图片支持三种级以上,这里可以做判断,拼接其他数字

if ($white === $rgbarr){    $lattice[$i] .= 0;}else{    $lattice[$i] .= 1;}

打印出来效果:

转成HTML:

参考代码:
$this->image就上面PHP生成的数据,替换成自己的就行了

<?PHPnamespace Lattice\\LatticePck;/** * 点阵输出类 * Class LatticeOutput */class LatticeOutput extends Lattice{    /**     * 二进制输出方法 HTML 把当前视图输出     *     * @return string     */    function getBinaryOutHTML(): string    {        $str="<HTML><body><p class='k'>";        foreach ($this->image as $item)        {            $str .= $this->getBinaryOutRow($item);        }        $str .= "</p></body></HTML>";        return $str;    }    /**     * 二进制输出方法 HTML 输出一行视图     * @param string $string     * @return string     */    function getBinaryOutRow(string $string): string    {        $strLen = mb_strlen($string);        $HTML = [            "<p></p>",            "<p class='h'></p>",        ];        $str="<p class='g'>";        for($i=0;$i<$strLen;$i++)        {            $str .= $HTML[$string[$i]];        }        $str.="</p>";        return $str;    }    public function getHTML()    {        echo "<!DOCTYPE\\">        <HTML xmlns=\\"http://www.w3.org/1999/xhtml\\">        <head>        <Meta name=\\"vIEwport\\" content=\\"wIDth=device-wIDth,user-scalabl        e=no\\">        <Title>测试</Title>        <style>            .k {                margin: 0px;                padding: 0px;                wIDth: 296px;                height:128px;                background-color: #F8F8F8;                float: none;                border: 2px solID #999999;            }            .g {                margin: 0px;                padding: 0px;                wIDth: 100%;                float: none;                height: 1px;            }            .h{                background-color: #000000;            }            .g p{                margin: 0px;                padding: 0px;                wIDth: 1px;                float: left;                height: 1px;                position: relative;            }            .g p.h{                background-color: #000000;            }        </style>        </head>        <body>";    }    public function getFoot()    {        echo '</body>        </HTML>';    }}$lattice = new LatticeOutput();$lattice->getHTML();echo $lattice->getBinaryOutHTML();$lattice->getFoot();

【推荐学习:PHP视频教程】 总结

以上是内存溢出为你收集整理的详解PHP扫描图片转点阵、二维码转点阵全部内容,希望文章能够帮你解决详解PHP扫描图片转点阵、二维码转点阵所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞114 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容