Maison  >  Article  >  développement back-end  >  Explication détaillée de la façon de convertir des images numérisées en bitmaps et codes QR avec PHP

Explication détaillée de la façon de convertir des images numérisées en bitmaps et codes QR avec PHP

藏色散人
藏色散人avant
2021-04-14 09:54:533466parcourir

Cet article vous présentera comment convertir des images numérisées en bitmaps avec PHP et convertir des codes QR en bitmaps. Il a une certaine valeur de référence. Les amis qui en ont besoin peuvent s'y référer.

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

Remarque :

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

Cela renvoie un tableau RVB, tout comme le tableau $white. Parce que le code QR n'a que du noir et du blanc, je n'ai fait ici qu'un jugement en noir et blanc. est 1 et le blanc est 0. Si votre image prend en charge plus de trois niveaux, vous pouvez porter un jugement ici et épisser d'autres nombres

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

pour imprimer l'effet :

Convertir en HTML :

Code de référence :
$this->image Remplacez simplement les données générées par PHP par les vôtres

<?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();

[Apprentissage recommandé : Tutoriel vidéo PHP ]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer