2

HTML をレンダリングし、レンダリングされたイメージをヘッドレス CentOS 5.4 サーバー上のファイルとしてキャプチャするというプロジェクト要件があります。私の特定の要件は次のとおりです。

1) 入力はレンダリングするページへの URL (またはローカル HTML ファイルへの file:// URL) になり、出力はページのレンダリングされた画像を含む画像ファイルになります
2) CSS はレンダラーによって最大でサポートされる必要がありますCSS レベル 1
3) .GIF または .PNG ファイルの透過色を含め、ページ内の静止画像はレンダリングされた画像で適切に表示される必要があります
4) ヘッドレス CentOS 5.4 サーバーで実行できる必要があります。
5) ソリューションは、商用利用が無料ではない製品またはコンポーネントに依存してはなりません

画面キャプチャを取得して画像に保存する以外に、ページで何もする必要はありません。難しい部分は、ヘッドレス環境でこれを行うようです。私が議論したソリューションの中には、機能するためにディスプレイが必要なものがあります。

助言がありますか?

前もって感謝します、ジム

解決策: 最終的に、標準ウィジェット ツールキット ライブラリ (www.eclipse.org/swt) を組み込みブラウザー機能に使用することになりました。これにより、ブラウザー コントロールを含むウィンドウをプログラムで開き、ページをレンダリングし、ウィンドウのコンテンツを画像ファイル (通常は PNG) にキャプチャすることができました。このアプローチの避けられない唯一の欠点は、スクリーン キャプチャを実行するためにウィンドウを一瞬だけ表示する必要がある場合の「ちらつき」です。私はそれと一緒に暮らすことができます。残りは、システム リソースを取得する SWT オブジェクトを初期化するためのコード、ページの読み込みが正常に完了したかどうかを確認するためのリスナー、ハングした接続をクリーンアップするためのコード (何らかの理由でページの読み込みが完了しない場合) だけでした。

チームメイトに、CentOS Linux で xvfb (X 仮想フレームバッファ) をいじってもらいました。最初のテストは機能しているように見えるので、以下のポスター (xvfb を試してみると言っている) からのアドバイスは、私の問題のヘッドレス サーバー部分に対する実行可能な解決策のようです。

4

1 に答える 1

1

xvfbを使用して仮想Xウィンドウ環境を開始できます。これで、通常のブラウザを起動してページをレンダリングし、screencaptureユーティリティを使用してウィンドウのコンテンツをキャプチャできます。それはきれいではありませんが、実行するのは簡単です。

WebKitはオープンソースで埋め込み可能です。これを小さなネイティブアプリで使用して、キャンバスにレンダリングし、ディスクに保存できますか?

于 2010-06-11T16:08:00.573 に答える