2009-03-10 9 views
1

私はApache/Vista PCで動作するようにimagegrabscreen(GD関数)を取得しようとしています。imagegrabscreenを動作させるには

私は次のコードを使用しています:現時点では

<?php 
$im = imagegrabscreen(); 

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

を私はベタ黒画像を取得し、私のセカンダリモニタ(1024 * 768)のサイズ。私はApache 2.2を使用しています。サービスとして動作し、UACをオフにしたVista SP1、PHP 5.2.8、およびGD(下記の情報)を使用しています。私はimagegrabscreenページのノートに従って、Apacheがデスクトップにアクセスできるようにしています。また、サービスとApacheサーバーを再起動しました。 imagegrabwindowと同じ結果が得られます。

これはバグですか(他の人がこの方法を実行するのに問題がありますか)、または間違っていることがありますか?詳細に

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のサービスログ:私はこのエラーを重複している

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

+0

ただのアイデアですが、あなたはUACを無効にしようとしましたか? – gradbot

+0

私はこれをオフにしています。Apacheもローカルユーザーとして実行しています - おそらく自分自身 - そしてこれは管理者ユーザーです。 – Ross

+0

Apacheはサービスとして動作していますか?ディスプレイへのiのアクセス(w2kのチェックボックスでしたか?) –

答えて

1

私はimagegrabscreen()のソースを見ました。

この時点で、私たちは両方ともマルチモニタセットアップを持っているため、失敗していると私は信じています。

は、現在のコードは、「全画面」のデバイスコンテキストを返すべき http://msdn.microsoft.com/en-us/library/dd144871(VS.85).aspx によるGetDC(0)、呼び出しが、 「 EnumDisplayMonitorsとCreateDCを使用して、特定のディスプレイモニタのDCを取得します関数 "

私はもうこれ以上のテストを行い、マルチモニタに適したコードを考え出すことができるかどうかを確認します。

+0

それは素晴らしいニュースヒューです。パッチを作成する場合は、Pierre(irc.freenode.org #libgd)に連絡してそれを含めることを尋ねることができますか?ありがとう! – Ross

0

- WinXPのSP3は、Apache 2.2.11は、サービス、PHP 5.2.8、GD 2.0として実行されています。 34バンドル。

私はデスクトップとの対話を許可し、サービスを再開しました。デュアルスクリーン設定(プライマリ:1440x900、セカンダリ:1920x1200)では、プライマリ画面のサイズに黒い四角形が表示されます。エラー報告が正しく行われました(E_ALL | E_STRICT)、XDebugはエラーを報告しません。

他に誰かがこのショットを撮っていますか?最も重要な変数はOS(Win2000/WinXP/Win2003/Vista)とPHP(5.2.2/.3/.4/.5/.6/.8)のバージョンのようです。

私はimagegrabscreen()のソースを覗いてみるつもりです。

+0

ヒューさん、ありがとう、私はピエール(彼は画像の拡張子を維持している)と連絡を取って、彼がこれについて何を知っているかを知ろうとしています:) – Ross

0

私はimagegrabscreen()はVistaではなくWindows XPでのみ動作すると思います。あなたは、私がヒューの現在チェック答えを見て、誰もが過去3年間でこれを解決した場合は興味津々このlink

3

をチェックする必要があります
?私は「デスクトップとやりとりするサービスを許可する」ステップに従いました。ノートパソコンで実行して、ときどき第2のモニターに接続することもあります。私がこの作業をしようとしているスクリプトを使用しているときには、私は自分のノートパソコンのメインモニターにしかいません。私はWAMP Server 2.2でWindows 7 64bitを実行しています。 php_gd2拡張子がチェックされ、ファイルを保存する際に機能します。しかし、何を試しても、すべての結果が得られれば、私はこのことを適切にスクリーンショットすることはできません。常に黒い画面を返します。私はこの例で提供されている基本的なコードも試しましたが(とにかく私の場合はほとんど同じでした)。

誰かが私に解決策を提供できるのであれば、私に知らせてください、私は素晴らしいでしょう。私はXPとVistaとの互換モードでWAMPを試してみました:/(私はどこかで、imagegrabscreen関数はXP/Vistaでしか動作しないと読んでいますが、最終的に私はバックグラウンドで監視する小さな軽量スクリプトを作成しようとしています私が取り組んでいるプロジェクトでは、単純にスクリーンショットをスナップし、サイズを少し小さくし、仕事の終わりには、ファイルを圧縮して電子メールでユーザーに渡します。しかし、imagegrabscreen関数を使ったのは私の初めてのことですが、それは涼しいように聞こえるので、今は自分の神経になってしまって、ちょうどその仕事をすることはできません... :(

+0

私は質問をして以来この問題の解決策を見たことがありません - これを行うための別の言語を選択したいと思うかもしれません(PHPは実際にWebプログラミング用です; PILモジュールでは、[3行のPython](http://www.varesano.net/blog/fabio/capturing%20screen%20image%20python%20and%20pil%20windows)です。 – Ross

関連する問題