人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

WEBページのサムネイル画像をサーバーサイドで動的に生成する方法を探しています。例えば Alexa.com [http://www.alexa.com/] のような機能です。

サーバOSはLINUX、言語はJavaもしくはPerlです。得たいレンダリング結果はHTML4.0、CSS(Level問わず)に準拠したものです。Javascriptの解析有無は問いません。

上記の環境で使用できるサムネイル生成ツールを有償・無償問わず、もしくはその生成のためのノウハウを探しています。ちなみにASP型のサービスは対象外とします。あくまで自サーバ内で処理を完結できることを目的としています。

●質問者: polaronblast
●カテゴリ:ウェブ制作
✍キーワード:Alexa ASP CSS Java JavaScript
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● typista
●0ポイント

http://cachu.xrea.jp/mkthumb/

mkthum.pl

perlです。

実行例が8パターン説明されていますので、こちらでサンプルDLしてできるかと思います。

◎質問者からの返答

質問の意図と異なります。

私が実装したい機能は、既存画像のサムネイルを作成することでは【なく】、WEBページ全体をレンダリングして画像ファイルへ落とすことです。Alexaで実際に検索してみて下さい。いくつかのサイトではサムネイル画像が表示されるはずです。


2 ● arcanum2005
●20ポイント

http://ja.wikipedia.org/wiki/HTML%E3%83%AC%E3%83%B3%E3%83%80%E3%...

HTMLレンダリングエンジン - Wikipedia

Webのサムネイルを作成するにはまずHTMLを解析してそれをレンダリングしなければならないわけですが、Perlではまずありません。Javaでは以前はSunマイクロシステム社でブラウザ(HTMLレンダリングエンジン)の開発が行われていたようですが、HTMLのバージョンは2.0だったように思えます。

Java以外での現在有効なレンダリングエンジンは IEコンポーネント・Geckoレイアウト・KHTMLがあげれていて、このうちGeckoレイアウト、KHTMLはC/C++のコードが公開されています。

よってJavaやPerlで実現するにはこれらのコードを元にして自作する必要があります。


ちなみにAlexa.comのサムネイルが現在のページの内容ではないことから、バックグランドで走っているアプリケーション(検索用DB作成用デーモン)がレンダリングエンジンを使用してHTMLを描画、その後サムネイル化してDBに登録するという方法を取っていると思われます。これらのアプリケーションはC/C++言語で記述されていることでしょう。


納期によりますが、コードの公開されているHTMLレンダリングエンジンをJavaあるいはPerlに移植した上で、内部でbmp上にHTMLをレンダリングし、そのbmpをサムネイル化して保存という手法をとればリアルタイムなサムネイル化も不可能ではないと考えます。しかしコストを考えると実用的ではありません。

実用に持ち込みたいのであれば、サムネイル画像作成の部分はC/C++でコーディングすることをお勧めします。


参考になればよろしいのですが。

http://java.sun.com/products/archive/hotjava/index.html

HotJava Browser

http://www.kagetaka.org/

影鷹 (kagetaka.org)

◎質問者からの返答

arcanum2005さん回答有り難うございます。

非常に参考になります。ただかなりヘヴィな実装が必要になりそうですね。この方法だと今回の要件は満たすのは厳しそうです。(環境的に)

Geckoで思いついたのですが、Mozillaのレンダリングエンジンを利用したツールなどは無いでしょうか。コマンドラインから引数でURL渡すだけで画像が返ってくるような物であれば理想的です。


3 ● marumaru
●0ポイント

http://dip.picolix.jp/disp5.html

ダウンロード・CrenaHtml2jpg WEBページをサムネイル画像に!

こちらではいかがでしょう。

blogの方では、開発時の試行錯誤が書かれていて、興味深いです。

◎質問者からの返答

これはWindowsアプリケーションです。サーバOSはLINUXと明記しています。質問をきちんと把握なさって下さい。


4 ● typista
●20ポイント

http://www.cssj.jp/

CSSJ でHTML/XMLをPDFに変換する

再回答です。

※1度目は完璧に誤解してました。申し訳ありません。

今回の情報でも要件に合わないようであれば閲覧ポイント(合計40ポイント?)は返却させていただきますので、回答欄にその旨お知らせください。


こういうのはどうでしょう?

HTMLをPDF化(CSSJサーバ)、PDFをJPEG or PNG or GIF化(ImageMagic)。ImageMagicではサムネールも作成可能です。

以下、1つ目はCSSJのページ。

※サーバはJava(Servlet)なので当然Linux動作可能です

(1ヶ月の試用は可能ですが1サーバ7万円のライセンスは少し高めですね。でも有償も問わないとのことなので。)

2つ目はその開発者向けのページ。

この以下引用部分を見るとクライアントへリダイレクトせずに(perlで)ファイル保存してしまえば、PDFをサーバ上に残すことができそうです。

その後、ImageMagicを使って、PDF→(例えば)JPEG&サムネールで良いかと。

ImageMagicのPDF→JPEGについては、4つ目のURL(Windows版の説明ですが)にconvertコマンドのパラメータ(対応フォーマット)説明を参照ください。

サムネールということは複数ページのキャプチャになるのでしょうから、それらをとりまとめるPerlなりは、ごりごり書く必要はありますね。

---------------------

# 本体の送信

$session->start_main(STDOUT, ’file:test.html’, ’text/html’, ’EUC-JP’);

print << ’EOF’;

<html>

<head>

<title>テストドキュメント</title>

<link rel=”StyleSheet” type=”text/css” href=”skin.css”>

</head>

<body>

<p>こんにちは</p>

</body>

</html>

EOF

$session->end_main(STDOUT);


# セッションを閉じる

$session->close();</plaintext>

<p>

start_resource,start_mainにファイルハンドルを渡すと、

それぞれend_resource,end_mainが呼び出されるまで、

ファイルハンドルに出力されたデータをCSSJサーバーに送ります。

その間、ファイルハンドルの本来の機能(STDOUTでは標準出力にデータを送るなど)は使えなくなります。

</p>

---------------------

http://www.cssj.jp/docs/develop.html

http://www-6.ibm.com/jp/developerworks/linux/031031/j_l-graf.htm...

dW : Linux : コマンドラインからのグラフィックス操作

http://hashi4.civil.tohoku.ac.jp/soft/node43.html

ImageMagick

◎質問者からの返答

typistaさん、回答有り難うございます。

CSSJ、この製品は初めて知りました。ライセンス料も範疇内です。ダイレクトにHTML->画像が希望ですが、代替案としてPDF経由でのコンバートもアリだと思いますので参考に致します。

製品や情報のリソースは英語であれば国外でも問題ありませんので、引き続き回答を募集致します。

※ポイントの件はそのままで結構です。


5 ● izayoimizuki
●120ポイント

http://papasan.org/Squishdot/

Papasan’s homeが同じような事をMozillaとLinuxのコマンドでやっています。


たぶん

http://papasan.org/Squishdot/1111501444

http://papasan.org/Squishdot/1111549834

http://papasan.org/Squishdot/1111576504

http://papasan.org/Squishdot/1111798896

http://papasan.org/Squishdot/1112044879

が関係すると思います。

他にもあったように思いますが見つけられません(汗

◎質問者からの返答

izayoimizuki さん

正に求めていた方法です。この方法にて実装できそうです。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ