首页  >  文章  >  后端开发  >  详解PHP扫描图片转点阵、二维码转点阵

详解PHP扫描图片转点阵、二维码转点阵

藏色散人
藏色散人转载
2021-04-14 09:54:533306浏览

本篇文章给大家介绍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生成的数据,替换成自己的就行了

";         foreach ($this->image as $item)         {             $str .= $this->getBinaryOutRow($item);         }         $str .= "

";         return $str;     }     /**      * 二进制输出方法 HTML 输出一行视图      * @param string $string      * @return string      */     function getBinaryOutRow(string $string): string    {         $strLen = mb_strlen($string);         $html = [             "

",             "

",         ];         $str="

";         for($i=0;$i<$strLen;$i++)         {             $str .= $html[$string[$i]];         }         $str.="

";         return $str;     }     public function getHtml()     {         echo "                                    测试                           ";     }     public function getFoot()     {         echo '         ';     }}$lattice = new LatticeOutput();$lattice->getHtml();echo $lattice->getBinaryOutHtml();$lattice->getFoot();

【推荐学习:PHP视频教程

以上是详解PHP扫描图片转点阵、二维码转点阵的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:learnku.com。如有侵权,请联系admin@php.cn删除