1

最近、写真を SQL データベースに追加し、Asp:Image を使用して *.aspx ページに表示しました。別の *.aspx ページに格納されているこのコントロールの ImageUrl。プロフィール写真に最適です。

手元に新しい問題があります。各ユーザーが独自のフォト ギャラリー ページを持つことができるようにする必要があります。写真をSQLデータベースに保存したい。写真の保存は難しくありません。問題は写真の表示です。ユーザーが写真をクリックすると、写真が別のページに表示されるはずです。

これを行う最善の方法は何ですか。明らかに、Asp:Image を使用しないことです。Gridview を使用する必要があるかどうか知りたいです。もしそうなら、どうすればそれを行うことができますか?このためにデータベースに保存されているサムネイルサイズにする必要がありますか?

画像をクリックすると、正しい画像が表示されるように、他のページがどのように見えるかが表示されます。URLを介してphotoIdを送信するのは正しくないと思います。

以下は、プロフィール写真を表示するために使用するページのコードです。

protected void Page_Load(オブジェクト送信者, EventArgs e) {

 string sql = "SELECT [ProfileImage] FROM [UserProfile] WHERE [UserId] = '" + User.Identity.Name.ToString() + "'";

 string strCon = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["SocialSiteConnectionString"].ConnectionString;
    SqlConnection conn = new SqlConnection(strCon);

 SqlCommand comm = new SqlCommand(sql, conn);

 conn.Open();

 Response.ContentType = "image/jpeg";

 Response.BinaryWrite((byte[])comm.ExecuteScalar());

 conn.Close();

}
4

6 に答える 6

1

「このコントロールのImageUrlは、別の*.aspxページに保存されています。プロフィール写真に最適です。」-.aspxページではなく、代わりに汎用ASP.NETハンドラー(.ashx)を使用しないのはなぜですか?.aspxよりも少し軽量です。「ASP.NETGenericHandler」を検索するだけで、多数のサンプルが見つかります。これは基本的に、.aspxページの背後にあるコードですが、ページの初期化/レンダリングのオーバーヘッドはすべてありません。

「写真をサムネイルグリッド形式で保存したいのですが、ユーザーが写真をクリックすると、別のページに写真が表示されます。」-アイテム要素のテンプレート化をサポートするASP.NETの繰り返し可能なコントロール(DataGrid、GridView、Repeater、ASP.NET 3.5のListViewなど)は、ここでうまくいくはずです。画像またはasp:Imageの高さと幅をサムネイルに合わせて設定するだけです。HTMLアンカーで使用するタグを、画像を「フルサイズ」で表示するページへのhrefでラップします。

于 2009-04-06T13:44:03.860 に答える
1

あなたの質問を分解しましょう:

このためにデータベースに保存されているサムネイルサイズにする必要がありますか?
はい。写真のサムネイルが初めて要求されたときにサムネイルを生成し、将来のアクセスのために DB にキャッシュします

明らかに Asp:Image を使用しないことです。Asp:Image を使用
しても問題ありません。あなたはそれで大丈夫です

Gridview を使用する必要があるかどうか知り
たいです おそらく Repeater の方が優れていますが、慣れている場合は gridview で問題ありません

URLを介してphotoIdを送信するのは正しくないと思います。
正しいですが、写真が現在のユーザーに属しているかどうかを確認する必要があります (URL を信用しないでください。

サムネイル
の生成 .net によって生成されたサイズ変更された画像は品質が低いことがわかります。高品質の画像を取得するには、GDI カンフーを使用する必要があります。詳細については、この投稿http://codebetter.com/blogs/brendan.tompkins/archive/2004/01/26/use-gdi-to-save-crystal-clear-gif-images-with-net.aspxを参照してください

于 2009-04-06T13:59:37.303 に答える
0

写真を表示するだけのページ (上記のように) がありますが、基準は異なります。使用しません WHERE [UserId] = '" + User.Identity.Nameが、データベース内の写真の ID に対してクエリ文字列 ID を送信する必要があります。

次に、aspxページに写真が必要な場合は、画像htmlタグを配置する必要があります<image src="photo.aspx?id=2" />

ページに html 画像タグを配置する方法は重要ではありません。

于 2009-04-06T13:22:32.743 に答える
0

これ またはこれを試すことができます。彼らはグリッド側であなたを始めるはずです。URL からのイメージ ID の送信を修正しました。セッション変数または非表示のコントロールを見て、フォームを投稿し、次のページを読んでください。

gridview を見て、テンプレート列を gridview の html image タグと組み合わせて使用​​します。アップロード時にサムネイルを作成し、両方をデータベースに保存します。そこから、簡単に取得できます。この方法では、画像の表示が速くなり、表示時に必要なサムネイル変換がありません。

于 2009-04-06T13:26:03.017 に答える
0

車輪を再発明したくない場合は、Gallery Server Pro (www.galleryserverpro.com) のようなオープン ソース ギャラリーをサイトに統合できます。C#/ASP.NET で書かれており、必要なすべてのことを行います。

ロジャー

[免責事項] 私は Gallery Server Pro の作成者であり主任開発者です [/免責事項]

于 2009-05-19T13:33:09.733 に答える
0

RbmBinaryImageコントロールは、データベースから直接画像を表示するのに役立ちます。Image フィールドを ImageContent プロパティに直接バインドできます。また、表示をサムネイルにするかどうかを指定し、サムネイル サイズを指定することもできます。

取得するには、http://www.ramymostafa.com/?p=187にアクセスしてください。

于 2009-04-27T08:09:00.643 に答える