C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: GridViewにDBの画像を縦横比保持して縮小表示するには


(過去ログ 68 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■39957 / inTopicNo.1)  GridViewにDBの画像を縦横比保持して縮小表示するには
  
□投稿者/ MAI (8回)-(2009/08/18(Tue) 19:25:35)

分類:[ASP.NET (VB)] 

2009/08/18(Tue) 19:33:12 編集(投稿者)
お世話になります。
タイトルの通り、GridViewに画像を縦横比を保持した状態で
固定サイズ表示(元の画像サイズを小さくサムネイル表示)したいのですが、方法がわかりません。
尚、現時点で固定サイズ表示(100x100)はできていますが、
元画像の縦横比にかかわらず、100x100のサイズにつぶれてしまっています。
これを、元の画像の縦横比を保持したまま、100x100のサイズにあうように
縮小表示したいのですが、方法を教えて頂けないでしょうか。

環境
ASP.NET(VB2005)、SQL Serever2005、IIS 6.0

尚、画像はSQL Serverのデータとして保存されています。
jpg_title varchar(100)
jpg_type  varchar(50)
jpg_data  image

-----------------------------------------------------------
<<Default1.aspx:画像表示側>>

<asp:ImageField DataImageUrlField="item_cd"
                DataImageUrlFormatString="Default2.aspx?item_cd={0}"
                HeaderText="JPG">
    <ControlStyle Height="100px" Width="100px" />
    <ItemStyle HorizontalAlign="Center" />
</asp:ImageField>

-----------------------------------------------------------
<<Default2.aspx:イメージ出力側>>

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim sbSQL As StringBuilder
    Dim ds As DataSet
    
    '(データ読込)
    
    With ds.Tables(0).Rows(0)
        Response.ContentType = .Item("jpg_type")
        Response.Flush()
        If Not IsDBNull(.Item("jpg_data")) Then
            Response.BinaryWrite(DirectCast(.Item("jpg_data"), Byte()))
        End If
        Response.End()
    End With
    
End Sub

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

引用返信 編集キー/
■39960 / inTopicNo.2)  Re[1]: GridViewにDBの画像を縦横比保持して縮小表示するには
□投稿者/ gtk2k (52回)-(2009/08/18(Tue) 20:09:47)
画像をリサイズしてからResponseに出力すればいいかと。

Dim oW As Integer = 100 ' サムネイル表示サイズ横
Dim oH As Integer = 100 ' サムネイル表示サイズ縦

Dim bmp As Bitmap = Bitmap.FromStream(New MemoryStream(DirectCast(.Item("jpg_data"), Byte())))
Dim s As Double = Math.Min(oW / bmp.Width, oH / bmp.Height)
Dim sW As Integer = CInt(s * bmp.Width)
Dim sH As Integer = CInt(s * bmp.Height)
Dim outBmp As Bitmap = New Bitmap(oW, oH)
Using g As Graphics = Graphics.FromImage(outBmp)
    g.DrawImage(bmp, (oW - sW) \ 2, (oH - sH) \ 2, sW, sH)
End Using
outBmp.Save(Response.OutputStream, ImageFormat.Jpeg)

(未検証)

引用返信 編集キー/
■39964 / inTopicNo.3)  Re[2]: GridViewにDBの画像を縦横比保持して縮小表示するには
□投稿者/ MAI (10回)-(2009/08/18(Tue) 20:53:34)
gtk2k さん、有難うございました。
見事に一発で成功致しました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -