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