'################################################################################
'####### KLASS FÖR HANTERING AV FILER,UPLOAD,CHECK FOR FILE ETC #################
'################################################################################

Public Class FileFunctions

	'SKAPAR EN THUMBNAIL EFTER DEN LADDAD UPP BILDEN
	Public Function UploadImageResize(FolderPath As String,ByVal ThePostedFile As System.Web.UI.HtmlControls.HtmlInputFile,ThumbNailFramePath As String,ImageName As String)
	Dim NewFileName As String = System.IO.Path.GetFileName(ThePostedFile.PostedFile.FileName)
		Try 
			ThePostedFile.PostedFile.SaveAs(FolderPath+NewFileName)
			Dim objImageFunctions As ImageFunctions = New ImageFunctions
			Dim OriginalImage As System.Drawing.Image = System.Drawing.Image.FromFile(FolderPath+NewFileName)
			objImageFunctions.CreateThumbNail(OriginalImage,ThumbNailFramePath,FolderPath,ImageName)
			objImageFunctions = Nothing
			OriginalImage.Dispose()											
		Catch e As Exception 
			Throw e 
			
		End Try
	End Function

End Class

'################################################################################
'####### SLUT PÅ KLASS FÖR HANTERING AV FILER,UPLOAD,CHECK FOR FILE ETC #########
'################################################################################



'################################################################################
'####### KLASS FÖR HANTERING AV BILDER ##########################################
'################################################################################

Public Class ImageFunctions

	'RÄKNAR UT STORLEKEN OCH RÄTT PROPORTIONER PÅ EN BILD SOM FÖRMINSKAS
	Public Function NewImageSize(ByVal CurrentWidth, ByVal CurrentHeight) 
		Dim NewFaktor As Double = CurrentHeight / CurrentWidth
		Dim NewWidth As Double  = Cint(300)
		Dim NewHeight As Double  = Cint(NewWidth*NewFaktor)
		Dim NewSize As Size = New Size(NewWidth,NewHeight) 
		Return NewSize
	End Function 
	
	'HÄMTAR JPEG CODECS
	Public Function GetEncoderInfo(ByVal mimeType As String) As ImageCodecInfo
       Dim j As Integer
       Dim encoders As ImageCodecInfo()
       encoders = ImageCodecInfo.GetImageEncoders()
       For j = 0 To encoders.Length
	       If encoders(j).MimeType = mimeType Then
    	       Return encoders(j)
           End If
       Next j
       Return Nothing
	End Function

'SKAPAR EN THUMBNAIL MED EN VISS BAKGRUNDSBILD SOM RAM	
	Public Function CreateThumbNail(OriginalImage As System.Drawing.Image,ThumbNailFramePath As String,FolderPath As String,ImageName As String)
	'RÄKNA UT NY STORLEK PÅ THUMBNAILBILDEN	
	Dim NewImgSize As New Size 
	NewImgSize = NewImageSize(OriginalImage.Width,OriginalImage.height) 
			
	'SÄTT JPEG CODECEN SAMT KVALITETEN
	Dim JPEGQuality As Integer = 100
	Dim objImageCodecInfo As ImageCodecInfo = GetEncoderInfo("image/jpeg")
	Dim EncParams As EncoderParameters = New EncoderParameters(1) 
	Dim EncParameter As EncoderParameter = New EncoderParameter(System.drawing.imaging.Encoder.Quality,JPEGQuality) 
	EncParams.Param(0) = EncParameter 
	
	'SÄTT RÄTT STORLEK OCH RÄTT BAKGRUNDBILD BEROENDE OM DEN ÄR LIGGANDE ELLER STÅEENDE
	Dim ThumbNailWidth As Integer
	Dim ThumbNailHeight As Integer
	Dim ThumbNailFrameFullPath As String
	If NewImgSize.width > NewImgSize.height Then
		ThumbNailWidth  = 135
		ThumbNailHeight = 104
		ThumbNailFrameFullPath =  HttpContext.Current.Server.MapPath(ThumbNailFramePath &"/PhotoRam_Hori.gif")	
	Else
		ThumbNailWidth  = 104
		ThumbNailHeight = 135
		ThumbNailFrameFullPath =  HttpContext.Current.Server.MapPath(ThumbNailFramePath &"/PhotoRam_Vert.gif")
	End If
			
	'LADDA IN THUMBNAILENS BAKGRUNDSBILD
	Dim TumbNailBakground As System.Drawing.Image = System.Drawing.Image.FromFile(ThumbNailFrameFullPath)
	
	'SKAPA THUMBNAILEN OCH RITA PÅ BAKGRUNDEN SAMT MINIATYRBILD 
	Dim ThumbNailNewFile as New System.drawing.bitmap(ThumbNailWidth,ThumbNailHeight,pixelformat.format24bpprgb)
	Dim objGraphic as Graphics = Graphics.FromImage(ThumbNailNewFile) 		
	objGraphic.DrawImage(OriginalImage, 0, 0, ThumbNailWidth, ThumbNailHeight)
	objGraphic.DrawImage(TumbNailBakground, 0, 0, ThumbNailWidth, ThumbNailHeight)

	Try 
		ThumbNailNewFile.Save(FolderPath+"Thumb_"+ImageName,objImageCodecInfo, EncParams) 
	Catch e As Exception 
		Throw e 
	Finally
		TumbNailBakground.Dispose() 
		ThumbNailNewFile.Dispose() 
		objGraphic.Dispose() 
	End Try 	
	End Function

End Class

'################################################################################
'####### SLIT PÅ KLASS FÖR HANTERING AV BILDER ##################################
'################################################################################