Zoomify:全体像を見つける





多くの人がGoogleやYandexの地図を使用して地球の衛星画像を表示しましたが、これらの画像がサーバーに保存される方法について考えた人はあまりいませんでした。 したがって、これらの画像は処理され、別々の小さな断片にカットされます。



このトピックでは、実装の1つとZoomify画像を接着する方法について説明します。これにより、何が危険なのかがすぐにわかります。リンクをクリックしてください: 2ドル



約6か月前、私は写真をZoomifyイメージに変換するユーティリティを作成しましたが、当時は無料の専用ユーティリティがあり、Photoshopにはそのような機能がありましたが、バッチ処理、ftpなどの機能を使用した送信が必要でした。 しばらくしてから、逆の機能を実行する必要がありました。これについては、このトピックで説明します。





なぜこれが必要なのですか?



上記のリンクは2ドルの画像のあるページを指しており、この画像を貼り付けて、サイズが100メガバイト(7500 x 6500ピクセル)以上であることが判明しました、もちろん、私はそれを圧迫しませんでしたが、いずれにしてもサイズは印象的です。 この画像のダウンロードを待つことができる人はほとんどいないと思います。特に、詳細を必要としない場合や、一部にしか興味がない場合です。 衛星地図では、すべてが非常に悲しいです。たとえば、ミンスクのサイズは4 GBを超えています(正確な数は覚えていませんが、最大の増加なしにハードディスクにGoogleキャッシュを保存しました)。



画像を接着する方法について説明しますが、ご覧のとおり、逆のアクションは、C#の実装例で後述するアルゴリズムに完全に基づいています。



どのように機能しますか?



記事を引き伸ばさないために、すぐに理論と混合した実装について説明し始めます。 Fiddlerを起動し、2ドルでページに移動します(ファイルがネットワーク経由で再度ダウンロードされ、Fiddlerに表示されるように、ブラウザーのキャッシュを消去しました)。







この図は、ページがロードされていることを示しています。その後、フラッシュアプ​​リケーション(ZoomifyViewer.swf)と2DollarBill画像のImageProperties.xmlがロードされます。 すべての画像はサーバー上の個別のフォルダーに保存されるため、ImageProperties.xmlは常に同じ名前で呼び出されます。 FlashビューアはImageProperties.xmlファイルをロードし、その後、ピースのロードを開始します。 彼が何を出荷するかをすぐに知っているほど多くのものがありますか?



< IMAGE_PROPERTIES WIDTH ="7500" HEIGHT ="6500" NUMTILES ="1052" NUMIMAGES ="1" VERSION ="1.8" TILESIZE ="256" />



* This source code was highlighted with Source Code Highlighter .






ご覧のとおり、写真へのリンクは1つではありませんが、視聴者は10個以上の写真をアップロードしています。 パラメータを順番に分析してみましょう。



WIDTH = "7500"-元の画像の幅

HEIGHT = "6500"-ソース画像の高さ

NUMTILES = "1052"-取得したピースの数

NUMIMAGES = "1"-画像の数

バージョン= "1.8"-バージョン

TILESIZE = "256"-ピースのサイズ







これらのパラメータが、あなたが尋ねるリンクにどのように近づくことができるか。 ここから楽しみが始まります:

TileGroup0はフォルダーです。256個のファイルがフォルダーに表示されるとすぐに、新しいフォルダーが作成されます(TileGroup1など)。

0-0-0.jpg-最初の0はレベル(256 * 256に収まる最小の画像)、2番目と3番目は配列(ほとんどのプログラミング言語のようにそれぞれ列と行、番号は0から始まります)









アルゴリズム



256 * 256の正方形に収まるように画像を縮小する必要がある回数を計算します。これにより、元の画像を2で除算します。その結果、234 * 203ピクセルになり、レベルは6になります。そして最初はナビゲーションに行きました。 すぐに最大レベルを取得し、画像を断片に分割してダウンロードを開始する必要があります。その後、それらを接着して結果を楽しむことができます。



まとめ



私はすべてをかなり詳細に説明し、さらにコードを添付しているので、質問はないはずです。 いずれにせよ、もしあれば、興味のある質問に喜んでお答えします。 デバッガの下で、私はかなりの数のサイトを見て、より多くの原則をどこでも同じように少し修正して見ましたが、どこで掘るかを知っていると思います。



Visual Studio 2010のプロジェクト、C#実装言語: ダウンロード



参照資料



公式サイト

理論とPython実装実装への参照を含むドキュメント




All Articles