私はASP.NETで通常のギャラリーを作成していますが、サムネイルの作成に関する経験はほとんどありません。私はアルゴリズムとGetThumbnailImageメソッドを知っていますが、私の問題はどこかにあります。ImageButtonコントロールを使ってイメージを表示しています。それがポイントです - 私はImageUrlプロパティに "サムネイル"画像をフックアップする方法がわかりません。それは可能でもあり、そうなら、どうですか?代わりに他のコントロールを使用する必要がありますか?何か提案ありがとう!ASP.NETでサムネイルを表示する最適な方法は何ですか?
答えて
イメージリクエストを処理し、サムネイルを返すHttpHandlerを作成できます(イメージ上に必要なものは何でも構いません)。あなたはASP.NETでのグラフィックスものを行うたび
、ほとんどSystem.Drawingのすべては、GDI +のラッパーであるとthetreforeを適切に配置する必要がアンマネージメモリへの参照を保持している心に留めておく(using
ステートメントを使用します) 。これは、StringFormatなどの単純なクラスの場合でも当てはまります。
HttpHandlerを設定する必要があるようですが、リサイズされたイメージが作成され、おそらくディスクにもキャッシュされるように思えます要求。
ので、例えば:
<asp:ImageButton ID="ImageButton1" ImageUrl="~/ImageHandler.ashx?ImageId=123" runat="server />
その後、ハンドラを持っているでしょう:
namespace MyProject
{
public class ImageHandler : IHttpHandler
{
public virtual void ProcessRequest(HttpContext context)
{
// 1. Get querystring parameter
// 2. Check if resized image is in cache
// 3. If not, create it and cache to disk
// 5. Send the image
// Example Below
// -------------
// Get ID from querystring
string id = context.Request.QueryString.Get("ImageId");
// Construct path to cached thumbnail file
string path = context.Server.MapPath("~/ImageCache/" + id + ".jpg");
// Create the file if it doesn't exist already
if (!File.Exists(path))
CreateThumbnailImage(id);
// Set content-type, content-length, etc headers
// Send the file
Response.TransmitFile(path);
}
public virtual bool IsReusable
{
get { return true; }
}
}
}
あなたはまた、web.configファイル
<system.web>
<httpHandlers>
<add verb="*" path="ImageHandler.ashx" type="MyProject.ImageHandler, MyProject"/>
</httpHandlers>
</system.web>
でこれを設定する必要があるだろうこれは、あなたを始めさせるのに十分なはずです。サムネイルを作成するには、ProcessRequestメソッドを変更する必要がありますが、すでにこれを処理したことに言及しました。また、ファイルをブラウザに送信するときにヘッダーを正しく設定する必要があります。
をご確認ください。小さな変更...あなたはcontext.Response.TransmitFile(path);を呼び出す必要があります。 –
Httpハンドラが方法です。
パフォーマンスに関するもう1つの注意:イメージを操作することは、メモリとCPUの両方の観点からディスク容量に比べて高価です。したがって、完全な画像からサムネイルを生成することは、それぞれの完全な画像に対して1回だけしたいことです。それを行うには、おそらく、画像がアップロードされた時点で、特に複数の画像を同じページに表示することになります。
- 1. ライブウェブサイトのサムネイルを最適化する最適な方法は何ですか?
- 2. ASP.NET MVCでデータを表示する最適なソリューションは何ですか?
- 3. GIFアニメーションイメージをWPFで表示する最適な方法は何ですか?
- 4. Delphi 2009でPDFファイルを表示する最適な方法は何ですか
- 5. Androidでキーストアパスワードを非表示にする最適な方法は何ですか?
- 6. ASP.NETのさまざまなユーザーに異なるフォームフィールドを表示する最適な方法は何ですか?
- 7. ASP.NETを使用してサムネイルを作成する「最適な」方法とは何ですか?
- 8. TabNavigatorのタブを非表示にする最適な方法は何ですか?
- 9. Asp.netの_DoPostBack javascriptメソッドの最適な方法は何ですか
- 10. asp.netのSQL Serverデータベースからイメージを表示する最適な方法は何ですか?
- 11. asp.netで毎時何かを表示する方法は?
- 12. UITableViewCellをカスタマイズする最適な方法は何ですか?
- 13. シングルトンを作成する最適な方法は何ですか?
- 14. アニメーションを駆動する最適な方法は何ですか?
- 15. Androidに大量の異なる情報を表示する最適な方法は何ですか?
- 16. Silverlightで角を丸めたビデオを表示する最適な方法は何ですか?
- 17. HTMLタグを非表示にする適切な方法は何ですか?
- 18. ASP.NETで生成されたJavascriptを最小化する最適な方法は何ですか?
- 19. Androidでストリームデータを表示する最適な方法リストビュー
- 20. JSFでjava.util.Calendarオブジェクトを表示する最もクリーンな方法は何ですか?
- 21. フォームで4つの設定に対してチェックマークを表示する最適な方法は何ですか?
- 22. .Net CLIアプリケーションで完了パーセントを表示する最適な方法は何ですか?
- 23. Androidで非常に長いテキストや文字列を表示する最適な方法は何ですか?
- 24. JSONオブジェクトのネストされた配列をAngular2で表示する最適な方法は何ですか?
- 25. "Select Language"インターフェースを表示する最適な手段は何ですか?
- 26. プロセスメモリマップを表示するのに最適なプログラムは何ですか?
- 27. ウェブサイトでストリームオーディオに最適な方法は何ですか
- 28. jQueryを使用してURLパラメータに応じてカスタムコンテンツを表示する最適な方法は何ですか?
- 29. PHPを介してSQLテーブルを表示する最適な方法は何ですか?
- 30. 複数ページのウェブサイトを1ページに表示する最適な方法は何ですか?
ありがとう、私はそれを試してみましょう! – jkottnauer
イメージをキャッシュするようにしてください。これは、おそらくすべてのイメージを拡大縮小しないためです。 –
右。あまりにも動的ではなく、ASP.NETで複雑なものを計算するのは、通常は良い考えです... – Lucero