Pergunta

Eu estou tentando chegar a imagegrabscreen (um GD função) para trabalhar com meus Apache/Vista PC.

Eu estou usando o seguinte código:

<?php
$im = imagegrabscreen();

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>

No momento em que eu conseguir um preto sólido imagem, o tamanho do meu monitor secundário (1024*768).Eu estou usando o Apache 2.2, executando como um serviço, Vista SP1 com o UAC desativado, PHP 5.2.8 e GD (informações abaixo).Eu segui a nota na imagegrabscreen página sobre a permissão de acesso do Apache para o ambiente de trabalho.Eu também reiniciado o serviço e o servidor apache.Eu obter os mesmos resultados com imagegrabwindow.

Este é um bug (fazer outras pessoas têm problemas para executar este método?) ou existe algo que eu estou fazendo de errado?

Array
(
    [GD Version] => bundled (2.0.34 compatible)
    [FreeType Support] => 1
    [FreeType Linkage] => with freetype
    [T1Lib Support] => 1
    [GIF Read Support] => 1
    [GIF Create Support] => 1
    [JPG Support] => 1
    [PNG Support] => 1
    [WBMP Support] => 1
    [XPM Support] => 
    [XBM Support] => 1
    [JIS-mapped Japanese Font Support] => 
)

Apache Serviço de Registo Em detalhes:

http://www.kalleload.net/uploads/maogfnfnczfh.png http://www.kalleload.net/uploads/maogfnfnczfh.png

Foi útil?

Solução

Eu olhei para a origem para imageGrabScreen ();

Neste ponto, acredito que está falhando porque nós dois temos configurações multimonitores.

O código atual chama getDC (0), que de acordo comhttp://msdn.microsoft.com/en-us/library/dd144871(vs.85).aspxdeve retornar o contexto do dispositivo para "toda a tela", mas "para obter o DC para um monitor de exibição específico, use os enumdisplaymonitores e as funções criadas"

Vou fazer um pouco mais de teste disso e ver se posso criar um código amigável para vários monitores.

Outras dicas

Eu vejo a resposta de Hugh atualmente verificada e estou curioso se alguém resolveu isso nos últimos 3 anos? Eu segui o "permitir o serviço para interagir com as etapas da área de trabalho" e estou executando em um laptop que ocasionalmente conecto um segundo monitor também. Embora quando estou usando o script com o qual estou tentando fazer isso funcionar, só estarei no meu monitor principal dos laptops. Estou executando o Windows 7 64bit, com o Wamp Server 2.2. A extensão php_gd2 é verificada e funciona com salvar o arquivo. Mas não importa o que eu tente e todas as descobertas, não consigo fazer essa coisa para a captura de tela corretamente, ela sempre retorna uma tela preta. Eu também tentei o código básico fornecido neste exemplo (embora o meu fosse praticamente a mesma coisa de qualquer maneira).

Se alguém puder me fornecer uma solução se encontrarem uma, por favor me avise, eu seria um grande. Eu até tentei executar o WAMP no modo de compatibilidade com XP e Vista:/ (eu li em algum lugar que a função ImageGrabScreen funciona apenas com XP/ Vista. Finalmente, estou tentando criar um pequeno script leve que eu possa ter executado em segundo plano para monitorar Progresso em um projeto em que estou trabalhando, o que simplesmente abre uma captura de tela, avalia um pouco e, no final dos meus dias de trabalho, fecharia os arquivos e os passaria ao usuário em e -mail. Tudo o resto funciona com facilidade , mas é a minha primeira vez usando a função ImageGrabScreen e, por mais legal que pareça, agora me deixou nos nervos porque eu não consigo fazer isso apenas fazer seu trabalho ... :(

Eu tenho duplicado este erro - WinXP SP3, Apache 2.2.11 executado como um serviço, PHP 5.2.8, GD 2.0.34 junto.

Eu permitiu a interação com o ambiente de trabalho e reiniciado o serviço.Em um processador dual-tela de configuração (Primária:1440x900, o Secundário:1920x1200) eu obter um retângulo preto tamanho da tela principal.Eu tenho de relatório de erro inclinados para a direita, para cima (E_ALL | E_STRICT) e XDebug não relatório de erros.

Alguém cuidados para tomar um tiro isso?Variáveis mais importantes parecem ser OS (Win2000/WinXP/Win2003/Vista) e a versão do PHP (5.2.2/.3/.4/.5/.6/.8).

Vou dar uma olhada na fonte para imagegrabscreen().

Eu penso imagegrabscreen() Funciona apenas no Windows XP, não Vista.
Você deve verificar isso link

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top