검은 픽셀이 true
이고 흰색 픽셀이 false
인 2 차원 배열에 전체 이미지 (PNG)를로드하고 싶습니다.PHP 이미지를 배열로 2 비트로로드하십시오.
가장 효율적인 방법은 무엇입니까?
이미지를 비트 맵으로 변환하고이를 읽으려고합니까, 아니면보다 효율적인 방법이 있습니까?
검은 픽셀이 true
이고 흰색 픽셀이 false
인 2 차원 배열에 전체 이미지 (PNG)를로드하고 싶습니다.PHP 이미지를 배열로 2 비트로로드하십시오.
가장 효율적인 방법은 무엇입니까?
이미지를 비트 맵으로 변환하고이를 읽으려고합니까, 아니면보다 효율적인 방법이 있습니까?
이 수행해야합니다
$image = imagecreatefrompng("input.png");
$width = imagesx($image);
$height = imagesy($image);
$colors = array();
for ($y = 0; $y < $height; $y++)
{
for ($x = 0; $x < $width; $x++)
{
$rgb = imagecolorat($image, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$black = ($r == 0 && $g == 0 && $b == 0);
$colors[$x][$y] = $black;
}
}
아마 더 효율적인 방법은 Imagick::exportImagePixels()
을 사용하는 것입니다.
'imagecolorat()'에 대해 알고 있고, 좀 더 효율적인 것을 찾고 있습니다. 그러나 당신의 대답에 감사드립니다. – Alasdair
@Alasdair 귀하는 귀하의 질문에 언급하지 않았습니다. ImageMagick을 가지고 있다면, ['exportImagePixels()'] (http://www.php.net/manual/en/imagick.exportimagepixels.php)를보고 그 배열을 반복 할 수 있습니다. – CodeCaster
죄송합니다. 더 자세히 설명해야합니다. 내가 이것을하고 싶은 모든 이유는 GD를 우회하는 것입니다. – Alasdair
검은 색이나 흰색이 아니라면 어떻게 될까요? – zaf
항상 검은 색이나 흰색, 2 비트 비트 맵입니다. – Alasdair
참고 : 각 픽셀에 1 비트의 정보 (흑백 또는 흰색) 만 있으면되므로 흑백 비트 맵은 * 1 비트 *입니다. – diracdeltafunk