Home  >  Article  >  Backend Development  >  Detailed explanation of converting PHP scanned images to bitmaps and QR codes to bitmaps

Detailed explanation of converting PHP scanned images to bitmaps and QR codes to bitmaps

藏色散人
藏色散人forward
2021-04-14 09:54:533471browse

This article will introduce to you how to convert scanned images to bitmaps with PHP and convert QR codes to bitmaps. It has certain reference value. Friends who need it can refer to it. I hope it will be helpful to everyone.

    /**
     * 图片转点阵(黑白)
     * @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] = &#39;&#39;;
            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];
    }

Note:

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

This returns an RGB array, which is the same as the $white array. Because the QR code only has black and white, I only make a black and white judgment here. Black is 1 and white is 0. If your picture supports more than three levels, you can make a judgment here and splice other numbers

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

to print out the effect:

Convert to HTML:

Reference code:
$this->image Just replace the data generated by PHP with your own

<?phpnamespace Lattice\LatticePck;/**
 * 点阵输出类
 * Class LatticeOutput
 */class LatticeOutput extends Lattice{
    /**
     * 二进制输出方法 HTML 把当前视图输出
     *
     * @return string
     */
    function getBinaryOutHtml(): string    {
        $str="<html><body><p class=&#39;k&#39;>";
        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=&#39;h&#39;></p>",
        ];
        $str="<p class=&#39;g&#39;>";
        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();

[Recommended learning: PHP video tutorial]

The above is the detailed content of Detailed explanation of converting PHP scanned images to bitmaps and QR codes to bitmaps. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:learnku.com. If there is any infringement, please contact admin@php.cn delete