/**
* 圖片轉點陣(黑白)
* @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:
本作品採用《CC 協議》,轉載必須註明作者和本文連結