Site Search:
Sign in | Join | Help
4Penny.net

VB.NET

Notes, Tricks and Tips on VB.NET

Storing Images in a Database

Imports System.IO
Imports System.Configuration
Imports Microsoft.ApplicationBlocks.Data
Imports System.Data.SqlClient
Imports System.Drawing



Public Class ImageData


    Dim w As Integer
    Dim h As Integer
    Dim filePath As String
    Dim imgStream As MemoryStream
    Dim pid As Integer


    Dim AbortCallBack As System.Drawing.Image.GetThumbnailImageAbort


 



    Public Property ImageStream() As MemoryStream
        Get
            Return imgStream
        End Get
        Set(ByVal value As MemoryStream)
            imgStream = value
        End Set
    End Property


    Public ReadOnly Property Exists() As Boolean
        Get
            If imgStream Is Nothing Then
                Return False
            Else
                Return True
            End If
        End Get
    End Property


    Public Property Image() As System.Drawing.Image
        Get
            Return System.Drawing.Image.FromStream(imgStream)
        End Get
        Set(ByVal value As System.Drawing.Image)
            value.Save(imgStream, System.Drawing.Imaging.ImageFormat.Png)
        End Set
    End Property


    Public ReadOnly Property Thumbnail() As System.Drawing.Image
        Get
            Dim img As Image = Image


            If img.Width > 150 Or img.Height > 300 Then


                Dim widthRatio As Double = CType(img.Width, Double) / CType(150, Double)
                Dim heightRatio As Double = CType(img.Height, Double) / CType(200, Double)
                Dim ratio As Double = Math.Max(widthRatio, heightRatio)


                Dim w As Integer = CType(CType(img.Width, Double) / ratio, Integer)
                Dim h As Integer = CType(CType(img.Height, Double) / ratio, Integer)


                Dim thumbNailImg As System.Drawing.Image
                thumbNailImg = img.GetThumbnailImage(w, h, AbortCallBack, IntPtr.Zero)


                Return thumbNailImg
            Else
                Return img
            End If



        End Get
    End Property


    Private Sub New()


    End Sub


    Function ThumbnailAbortCallback() As Boolean
        Return False
    End Function



    Public Sub New(ByVal s As String, ByVal intPersonIDFK As Integer)


        AbortCallBack = New System.Drawing.Image.GetThumbnailImageAbort(AddressOf ThumbnailAbortCallback)


        Dim img As System.Drawing.Image
        img = Image.FromFile(s)


        imgStream = New MemoryStream()


        


        img.Save(imgStream, System.Drawing.Imaging.ImageFormat.Png)


        If (imgStream.Length / 1000) > 100 Then
            Throw New ImageSizeException()
        End If


        pid = intPersonIDFK
    End Sub


    Public Sub New(ByVal s As MemoryStream, ByVal intPersonIDFK As Integer)
        imgStream = s
        pid = intPersonIDFK
    End Sub


    Public Sub New(ByVal intPersonIFDK As Integer)
        imgStream = ImageData.getImage(intPersonIFDK)
    End Sub



    Public Sub save()


        SqlHelper.ExecuteNonQuery(ConfigurationManager.ConnectionStrings("IronMan").ConnectionString, _
                                  Data.CommandType.StoredProcedure, _
                                  "_4P_Person_UpdatePhoto", _
                                  New SqlParameter("@imgPhoto", imgStream.GetBuffer()), _
                                  New SqlParameter("@intRowID", pid))
    End Sub


    Public Shared Function getImage(ByVal intPersonIDFK As Integer) As MemoryStream
        Dim ds As System.Data.DataSet = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings("IronMan").ConnectionString, _
                                  Data.CommandType.StoredProcedure, _
                                  "_4P_Person_GetPhoto", _
                                  New SqlParameter("@intRowID", intPersonIDFK))


        Dim ms As MemoryStream
        Try
            ms = New MemoryStream(CType(ds.Tables(0).Rows(0)(0), Byte()))
        Catch ex As Exception
            Return Nothing
        End Try



        Return ms


    End Function


    Public Shared Sub clearImage(ByVal intPersonIDFK As Integer)


        SqlHelper.ExecuteNonQuery(ConfigurationManager.ConnectionStrings("IronMan").ConnectionString, _
                                  Data.CommandType.StoredProcedure, _
                                  "_4P_Person_UpdatePhoto", _
                                  New SqlParameter("@imgPhoto", Nothing), _
                                  New SqlParameter("@intRowID", intPersonIDFK))


    End Sub


    Public Class ImageSizeException
        Inherits Exception


    End Class


End Class

Comments

No Comments

Leave a Comment

(required)  
(optional)
(required)  
Add