PHP에서 스크린 샷 작업은 일반적으로 내장 기능이 아니며 Windows 'API 또는 외부 확장의 도움이 필요합니다. ImageGrabWindow 는 지정된 창의 이미지를 가로채는 PHP (Windows 플랫폼에서 GDI+ 확장 기능)의 함수입니다. ImagePNG 함수와 결합하여 스크린 샷을 PNG 형식의 이미지 파일로 편리하게 저장할 수 있습니다.
아래에서는 ImageGrabWindow를 사용하여 스크린 샷을 구현하고 PNG 이미지로 저장하는 방법을 자세히 소개합니다.
ImageGrabWindow ($ hands, $ client_area = false)
이 기능은 지정된 창의 스크린 샷을 잡는 데 사용됩니다.
$ 핸들 은 창의 핸들 (HWND)이며 다른 Windows API를 통해 얻을 수 있습니다.
$ client_Area 옵션 매개 변수는 기본적으로 전체 창을 기어 다닙니다. True 로 설정되면 창의 클라이언트 영역 만 크롤링됩니다.
imagepng ($ image, $ filename = null, $ quality = null, $ filters = null)
GD 이미지 리소스를 파일 또는 PNG 형식의 출력에 저장하십시오.
$ image는 ImageGrabWindow 가 반환 한 이미지 리소스입니다.
$ filename 은 저장된 파일 경로입니다. 생략하면 브라우저에 직접 출력됩니다.
$ 품질 PNG 압축 수준, 범위 0-9.
스크린 샷을 찍기 전에 대상 창의 핸들 (HWND)을 가져와야합니다. 일반적으로 FindWindow 와 같은 Windows의 API 기능을 사용합니다.
예제 메모장 창 핸들을 얻으려면 :
<?php
// 메모장 창 손잡이를 얻으십시오
$hwnd = FindWindow(null, "Untitled - Notepad");
if (!$hwnd) {
die("창을 찾을 수 없습니다!");
}
?>
참고 : 위의 코드는 PHP 확장 (예 : Win32 API 확장)을 사용하여 실행해야합니다.
Window Handle $ HWND를 얻은 다음 ImageGrabWindow를 사용하여 스크린 샷을 얻고 ImagePNG를 사용하여 PNG 이미지로 저장한다고 가정하십시오.
<?php
// 가정$hwnd올바르게 얻었습니다
$image = imagegrabwindow($hwnd, true); // 클라이언트 영역 만 크롤링하십시오
if (!$image) {
die("스크린 샷이 실패했습니다!");
}
// AS를 저장하십시오PNG문서,문서路径为当前目录下的screenshot.png
$imagePath = "screenshot.png";
if (imagepng($image, $imagePath)) {
echo "스크린 샷 성공,저장 {$imagePath}";
} else {
echo "保存스크린 샷이 실패했습니다!";
}
// 이미지 리소스 릴리스
imagedestroy($image);
?>
이 기능은 Windows Grabwindow가 Windows 그래픽 인터페이스에 의존하기 때문에 Windows 플랫폼의 PHP 환경에서만 사용할 수 있습니다. 이 기능은 Linux 또는 MacOS에서 지원되지 않습니다.
이 기능을 호출하려면 PHP_GD2 및 PHP_WIN32STD (또는 기타 관련 Windows 확장)가 필요합니다.
대상 창이 존재하고 표시되어야합니다. 그렇지 않으면 이미지를 캡처 할 수 없습니다.
가져와야하는 웹 페이지의 URL의 경우 네트워크 요청이 포함 된 경우 도메인 이름 부분을 gitbox.net 으로 바꾸십시오 (이 예에서는 그러한 요구 사항이 필요하지 않음).
ImageGrabWindow를 통해 지정된 창의 스크린 샷을 얻은 다음 ImagePNG를 사용하여 스크린 샷을 PNG 형식 이미지로 저장하여 간단한 스크린 샷 기능을 실현하여 Windows의 PHP 개발자가 스크린 샷 작업을 신속하게 완성 할 수 있습니다.