동일한 이미지 (및 다른 형식으로 복사본)의 크기가 조정 된 복사본을 감지하기 위해 이미지 파일의 지문을 계산하는 간단한 스크립트 작업을하고 있습니다.매트릭스로 PHP로 gd 이미지 리소스에 액세스
는, 이것은 (이것은 무엇에주의를 지불하지 마십시오하지function image_chksum (&$src_image, $x1, $y1, $x2, $y2) {
$chksum = 0;
for ($x = $x1; $x < $x2; $x++)
for ($y = $y1; $y < $y2; $y++) {
$rgb = imagecolorsforindex ($src_image, imagecolorat($src_image, $x, $y));
$sum = ($rgb["red"] + $rgb["green"] + $rgb["blue"] + $rgb["alpha"]);
$chksum += $sum;
}
return $chksum;
}
: 모든 것은 내가 이런 imagecolorat()
를 사용하여 이미지의 모든 단일 픽셀을 읽을 필요가 이미지의 색상 값에 액세스하는 것을 제외하고, 꽤 잘 작동 전체 알고리즘, 단지 예일뿐입니다)
그래서. 이 추한 코드를 보면서 질문이 나옵니다 - 저는 단지 gd 이미지 리소스 (제 경우는 $src_image
)에 액세스하여 배열 또는 일부로 사용할 수 있습니까? 이 방법은 PIL/PILLOW를 사용하여 파이썬에서 작동하는 것을 보아 왔습니다.
이 문제는 알파 PNG 이미지를 확인할 때도 나타납니다. 불행히도 여기에 설명 된 방법은 : How to check a PNG for grayscale/alpha color type? 트루 컬러가 아닌 이미지에서는 작동하지 않으므로 모든 단일 픽셀을 다시 검사해야합니다. 투명도는 일반적으로 단일 픽셀이 아닌 영역에서 사용되기 때문에 마음에 들지 않는 아이디어는 모든 N 번째 픽셀을 확인하는 것입니다.하지만 이는 매우 냉담합니다.