PHP掃描圖片轉點陣 二維碼轉點陣
阿新 • • 發佈:2020-08-09
/** * 圖片轉點陣(黑白) * @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: