限りなくmoonshine...

GarageBandなどDTMネタとバンドネタと甘いもの中心に。たぶん。

サーバでスクリーンショット。

2008-06-26 02:12:35 | work

先日エントリした、かなり無謀なスケジュールの開発依頼について。
近年になく本気モード全開で、スケジュール上では割とオンスケ。実働時間は聞かないでね。
1点の躓きをのぞいては。

仕様の中に、簡単に言うと、「ログインしたユーザさんが指定した条件に一致するデータを
データベースから取得して、直近6ヶ月分サマリを表とグラフにしてブラウザ表示」という
ものがある。
これ自体は、普通に php でデータベースからデータを取ってくることができるので問題ない。
グラフは単純な棒グラフで、X軸が6項目のグラフが6個表示されれば良い。
したがって php で GD モジュールを使えば割と簡単にできるし、開発サーバとして使用して
いる他システムの本番サーバ(ありえねえ)には、すでに GD2 がインストール済み。
いまだにこの開発しているシステムの本番サーバ環境が決まっていないというのが気になるが、
開発サーバ上で動けば良いらしいので気にしないことにする。

ところが、この「現在表示されている表とグラフを、ボタンクリックすることで画像にして、
その画像を自分宛にメール送信する」という仕様も書かれていて。
仕様を見た時、確かネット上で、 URL を指定すればそのサイトのイメージを作成してくれる
サービスがあったな、と思い出し、機能的には実装可能だろうと判断。
つまり簡単に言うと、ブラウザで開いている画面を、キャプチャして画像保存するような感じ。
それを、サーバ側で実行して画像ファイルを作ってしまおう、ということ。
そんな事くらいはユーザで勝手にやってくれ、とも思ったが、画面キャプチャ( Windows で
いうところの、Alt+Print Screen )すら、やり方のわからない人もいる、ということで。

で、フンフンと色々調べていて気がついたのだが。
すみません。簡単にはできません。後輩くん、ごめんよ、「できるんじゃね?」とか言って。
いやできなくはないんだけどね。実装がかなり重い。しかも、環境次第。
まあ要するに、渡された URL をブラウザで表示するかの如くレンダリングして、それを画像
ファイルとして保存する訳だが。
なんか、ネット上では非常に情報が少ないの。
そういうサービスをやってるサイトはいくつも見つかるんだけど、勿論ソースが公開されて
いる訳でもなく、個人で検証されているようなサイトも殆ど見当たらない。
まして、Linux や Windows Server ならともかく、Solaris は皆無。
Windows なら IE のスクリーンショット作れるから、仕様にも合致。こんな時だけ羨ましい。

結局、たぶん妥当な手順としては、

・Xvbf(仮想フレームバッファ)を使用して、X の仮想環境を作る
・その仮想フレームバッファに、mozilla なり Firefox なり、ブラウザを起動する
・画像にしたいページを表示
・仮想フレームバッファをキャプチャ
・必要であれば、ファイル形式の変換、リサイズ等

なのかな、と。ただし、情報元は Linux。
しかも、Xvbf なんて勿論インストールされていないだろうから、他の本番システムが 24時間
年中無休で稼働している開発サーバ(笑)に載せられるはずも無い。
Xvbf 使わなくても、コンソールで X Window を上げとくというのもアリかなと思ったけど、
セキュリティ的にもメモリ占有的にもマズいだろう。
またスクリーンショットが IE ではないのも、「使用ブラウザは IE6 以上」となっているので、
使うがわからしてみれば違和感アリアリだろう。よく考えたら、IE にしか存在しないタグとか
CSS とか使ってるんだから、どのみちサーバサイドで正しいスクリーンショットは無理か。

結論。
自前でスクリーンショットを作成するのは、サーバ環境的にも工数的にも厳しい。

じゃ、どうするか、だけど、仕方ないので imagecreatetruecolor() で新規画像作成をして、
表の部分とかグラフの部分をちまちまと描いていって、imagejpeg() でファイル出力するしか
ないかな、と。
「できるんじゃね?」と言ってしまった償いの意味も込めて、明日作ってみよう。

ところで。
SimpleAPI の中の人は、これを独りで開発したそうだから、やっぱ凄い人はいるもんだ。
サーバを自分の好きな環境に構築できるなら、もうちょっと何とか…は、負け惜しみ。


#参考リンク

■Jamz - サーバ側でWEBサイトのスクリーンキャプチャ、サムネイルを作成する方法

■papasan's Home - ウェブサイトの自動スクリーンショット

■ImageMagick

■ImageMagick 簡単な説明(ITpro)



最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
がんばってますね~(笑) (studio_peach2004)
2008-06-26 23:26:24
ご無沙汰しています。仕事の方、バリバリやっているみたいですね~。結構結構。
ま、いろいろと理不尽な状況にガマンの連続だと思いますが、きっと明日はいいことあるさってなことでお互い乗り切りましょう。

私はIT関係の業務…といいましても社内のシスアド的な業務でしたが、理不尽な異動により違う業務に変わって一年が過ぎようとしています。
サラリーマンなので人事は仕方ないとしても、元の部署がその後どんどん悪い状況に陥っていることが歯痒くてたまりません。
それでもなんとかつながりを持ちながら、IT部門のみならず組織・地域が良くなるような働きかけは続けています。

今の業務をこなしながらの活動ではありますが、tsukaさんのがんばりを見ると、くじけそうになる自分への励みになり、新たな力が沸いてくるような気がします。

音楽の面も同様に、刺激をいただいてますよ~。

まとまりのないコメントでしたが、またちょくちょく来ますのでよろしくです。それでは、また。


返信する
ご無沙汰です! (tsuka315)
2008-06-30 00:11:31
Peachさん。
ご無沙汰ですー、そういえば最近、見れてませんでした、、、スミマセン。
Peachさん、あれからもう1年なんですねー。早いものです。
幸か不幸か、落ち込む前に「そっちがその気なら、こうやってしまえ!」みたいに発想が行っちゃうので(まあそれが大暴走となる場合も無きにしも、、、だったんですけどね)、割と本人は頑張ってる意識は無かったりしますが(笑)。
音楽の方は、今こういう状況でちょっとペースがスローになってます、が、止まってる訳ではないので、またそのうちエントリすると思います。よろしくです。
返信する