[クローズド] Webアプリケーションで画像メディアの保護
-
22-08-2019 - |
質問
私たちは、大規模なwebアプリケーションで画像メディアのデータベースをmaintaingています。高解像度のJPGのみでは大きな(> 15メガバイト)であり、どのような方法でダウンロードして利用できるようにしてはいけません。今、私たちは(ズームアップ機能のような)クライアントへの画像の細部(作物)へのアクセスを提供する必要があります。クライアントは、画像のdownskaledバージョンを参照し、フルスケールモード(100%)で表示することのエリアを選択することができる必要があります。
これはどのような方法で最もパフォーマンス(トラフィックやCPU賢明)で実施することができますか?私たちは、限り、高解像度の画像ファイルが保護されたまま、任意の溶液に開いています。アプリケーションは、C#と.NET Framework 3.5で開発されています。
任意のアイデア?事前に感謝します!
解決
まず最初は、サーバーにアップロードする前に画像を圧縮し、透かしです。次に、ユーザーにそれらを提示。彼ら画像は静的になりますので、これは少なくともCPUリソースがかかります。
私は個人的には、その後フルサイズバージョンの画像をトリミングし、側面に沿って圧縮されたものをそれらを置きます。このように、クライアントは、側面に沿って完全な画像(いえ圧縮及び透かし入り)フル高解像度バージョンの小さなサンプルのビューを持つことができます。
あなたは、おそらくあなたは、クライアントの数が少ないと非常にがっしりした体格のサーバーを持っていない限り、オンザフライ画像操作を避けたい。
他のヒント
私はブラウザに画像の低解像度バージョンを提供して、選択をトリミングし、高解像度に戻ってそれを送信するサーバに戻って要求を送信し、クライアント側の作物のUIをHAVAでしょう。
、それはそれを行う方法の問題だけです。
あなたが好きかもしれないディープズームのAJAXバージョンがあります - ドラゴンを参照してください。
http://livelabs.com/seadragon-ajax/gallery/する
ユーザが画像の低解像度バージョンを提示されます。彼らはその後、彼らは好きなことをその一部にズームインすることができます。
まずIだろうプリレンダリング、圧縮ファイル形式でそれらを保存するすべてのフルサイズの画像の透かしを入れたバージョンと同様に、プリレンダリングされた低解像度版を。
私はブラウジングのために、低解像度の画像を提供します。その後、ユーザの透かしを入れた高解像度画像は、それらのトリミングを設定する。
私は非透かし画像をトリミング第2の専用画像処理サーバを持つことになり、確認の時点で、それをクライアントに送信されたウェブサーバにトリミングされた画像を渡されます。
言われていること、それはまだ切り取られた部分を養殖し、非透かし画像のフルサイズのコピーを作成するためにそれらを一緒にstichedクライアント側のスクリプトを作成するには、可能でしょう。
のために利用できるようにしてはいけません どのような方法でダウンロードします。
と対立しています
クライアントがdownskaledが表示されます イメージのバージョンとのことができるように で表示されるように、それのエリアを選択 フルスケールモード(100%)。
...あなたは、画像のすべての領域がフル解像度で見ることを可能にする時点で、画像全体が一緒にステッチすることができます。あなたが効果的(非常に不便な場合)フルサイズの画像を利用可能にしています。
これのどれもあなたがが目標を達成するのに役立つていない。
私はそれがダウンロードする画像の領域を選択するのに使用するために72dpiです透かし入りのコピーを提供することで行いたい方法。画面の不動産が問題だった場合は、元の%にこれを拡張できます。ユーザーは、左上と右下の座標を選択しています。その後、ユーザーに提供するために、元のうち、この領域をコピーするにはImageMagickのようなものを使用します。
あなたはリソースを節約する必要がある場合は、あなたが持っている可能性があり、ユーザーが事前に定義されたグリッドからダウンロードし、そのグリッドCOORD 14時11分が選択されている最初の時間は、image_1411_crop.jpgは、ファイルシステムに書き込まれます、次回はそのCOORDです選択し、ファイルがすでに存在しています。
の編集の他の回答にご意見の一部を読んで...
に関係なく、あなたが発生し、サーバーサイドのキャッシングが、あなたは、帯域幅と同量のトラフィックを使用するつもり取り掛かるどのような方法。 300dpiのJPEGは関係なく、それだけで生成されていますまたはファイルシステム上に座っている場合は300dpiのJPEGではありません。
あなたはCPUやディスク容量を節約する必要があるかどうかを確認する必要があります。あなたは、画像の万人のライブとのみ40のユーザーを持っている場合は、CPUヒットを買う余裕ができます。あなたは、画像の40回のライブと万人のユーザーを持っている場合は、HDDのために行く。
私は、保存のために S3 を使用すると思います。 2つのバケットを作成します(国民が保護された)、あなたがそれらをダウンロードするには、ユーザーを許可した後、保護されたバケットの画像にURLを配ります。 S3 URLは有効期限で安らか行うことができます。
15MBの画像を使用すると、あなたが先に時間の拡大縮小/トリミングされたバージョンを事前に生成する必要があることを認識可能性が高いでしょう。
私は、すべてのいくつかの並べ替えが、元のファイルの透かしを使用すると思います。 (グーグルマップのような)
[編集:ズームのための追加ディープズーム]
/ <シルバーの ディープズームをチェック> のcropingを管理し、ズーム用(デモを)。 彼らもhref="http://www.microsoft.com/downloads/details.aspx?familyid=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&displaylang=en" rel="nofollow noreferrer">ユーティリティすべてのトリミングされた画像を生成する。