2012-01-19 30 views
12

Tôi đang cố gắng chụp một trang web địa phương bằng imagegrabscreen nhưng tôi chỉ nhận được một ảnh chụp màn hình màu đen. Tôi đã thử gần như mọi giải pháp từ các câu hỏi ở đây trên SO và các trang web khác và không có gì hoạt động.Chụp ảnh bằng imagegrabscreen và Wamp

Tôi đang sử dụng và thực hiện như sau:

  • Windows 7 64bit
  • WAMP 2.2a 64bit
  • PHP 5.3.8
  • GD2 (phiên bản: "kèm 2.0.34 tương thích") được cài đặt và kích hoạt.
  • Cho phép dịch vụ apache tương tác với máy tính để bàn.
  • Tôi không có màn hình phụ hoặc bất kỳ thứ gì.
<?php  
    $im = imagegrabscreen();  
    imagepng($im, "myscreenshot.png");  
    imagedestroy($im);  
?> 

Và tất cả tôi nhận được là một màu đen hình 1024x768 png.

+0

Bạn có máy chủ đồ họa đang chạy (XFree86, X11) không? – knittl

+0

@knittl: Hmm nope, đó là Windows 7 chạy bình thường không có gì khác. – Danny

+0

Dù bạn làm gì, tôi hy vọng nó sẽ không hoạt động. Windows SUCKS như một máy chủ, và có một số vấn đề an ninh phải ra khỏi hộp. Dính vào một máy chủ đèn, hoặc cái gì khác. –

Trả lời

1

Đây là từ nhận xét trên trang hướng dẫn sử dụng php.net cho imagegrabscreen(); hãy thử và xem nó có khắc phục được sự cố không, nó có vẻ giống như những gì bạn đang gặp phải:

Để làm việc này, dịch vụ Apache phải được đặt thành 'Cho phép dịch vụ tương tác với máy tính để bàn' nếu không bạn sẽ chỉ nhận được một hình ảnh trống.

Để thực sự làm thay đổi:

  • Run lệnh services.msc như quản trị.
  • Tìm dịch vụ Apache trong danh sách, nhấp chuột phải và chọn Properties
  • Nhấp vào Log On
  • Thay đổi dịch vụ để sử dụng một tài khoản hệ thống cục bộ nếu nó không phải là đã
  • Đánh dấu vào ô mà nói Allow this service to interact with the desktop.
  • Khởi động lại dịch vụ Apache.
+0

Đây là những gì tôi đã thực hiện trước đó, chạy services.msc làm Quản trị viên, sau đó trong Đăng nhập Tab (của dịch vụ 'wampapache') đã chọn bán kính đầu tiên và chọn hộp, áp dụng, OK và khởi động lại dịch vụ và tôi vẫn nhận được một hình ảnh màu đen làm ảnh chụp màn hình. – Danny

2

Bạn có thể làm điều đó. Tôi đã làm điều này. Tôi đã không sử dụng WAMP. Tôi đã sử dụng mọi thứ riêng biệt. Tôi có tất cả các thiết lập PHP, MySQL và Apache.

Dưới đây là các bước.

  1. Dừng máy chủ Apache service. Bạn có thể thực hiện việc này bằng cách gọi

    NET STOP Apache2.2 
    

    hoặc bạn có thể mở services.msc rồi dừng lại.

  2. Sao chép thư mục Apache2.2 ra khỏi C:\. Đặt địa điểm ở nơi bạn có toàn quyền truy cập. Giống như Documents hoặc trong ổ đĩa khác. Tôi đặt nó vào K:.Để chắc chắn bạn có toàn quyền truy cập,

    1. Đệ quy nhận quyền sở hữu thư mục Apache.
    2. Đảm bảo bạn có Full control đánh dấu đã đánh dấu trên tab bảo mật của thư mục Apache2.2.
    3. Tệp cấu hình mới của Apache này httpd.conf sẽ chứa nhiều đường dẫn được mã cứng. Giống như C:\apache software foundation\apache2.2. Chỉ cần thay thế những người có đường dẫn mới của bạn. Trong trường hợp của tôi là K:\Apache2.2.
  3. Tại thời điểm này, Dịch vụ máy chủ Apache của bạn sẽ dừng lại. Vì vậy, 80 cổng sẽ không bị chặn. Và bạn sẽ có của riêng mình Apache tại lãnh thổ của riêng bạn (thư mục).

  4. mở một cửa sổ giao diện điều khiển và đi đến nhà Apache của bạn nơi htdocs thư mục cư trú cùng với một số thư mục khác sử dụng cd

  5. Run bin\httpd.exe. Điều này có nghĩa là bạn đang chạy Apache. Bạn có toàn quyền truy cập vào máy tính để bàn của bạn. Bạn có thể làm bất cứ điều gì, do đó, httpd.exe
  6. Mở trang web của bạn. Với mã sau đây.

    <?php 
    header("Content-type: image/png"); 
    $im = imagegrabscreen();  
    imagepng($im); 
    imagedestroy($im); 
    exit(0); 
    ?> 
    
  7. Bạn sẽ thấy hình ảnh.

+0

Quên tiền thưởng. –

+0

Tôi quên kiểm tra xem có bất kỳ câu trả lời mới nhất nào không, nhưng tôi sẽ thử lại vào ngày mai và thưởng bằng tiền thưởng nếu nó hoạt động – Danny

0

Nếu bạn đang gặp rắc rối với imagegrabscreen(), bạn có thể muốn thử một công cụ dòng lệnh cửa sổ để chụp màn hình như boxcutter. Sau đó sử dụng hàm PHP exec() để gọi nó. ví dụ:

<?php 

$exec = exec('boxcutter -f image.png'); // -f is full screen option 
+0

Đó không phải là cách php! –

+2

True, nhưng nếu không có gì khác hoạt động ít nhất nó là một cách :) –

Các vấn đề liên quan