jag har uppgraderat min bilduppladdning med lite variabel storleksändring och såg då nånting som jag missat tidigare..
när jag laddar upp bilden kollas filstorleken mot filen man laddar upp, men det jag gör är att förminska den. men det var fortfarande den ursprungliga storleken som hamnade i databasen, inte bra.
det verkar inte gå att kolla filstorlek direkt på ett image-objekt (eller hur?).
måste jag leta upp den förminskade filen på servern och räkna ut det därifrån?
det verkar vara nåt annat som stör vid konverteringen av bilden (?)
kan ju bifoga lite mer så kanske det går att se bättre, testade en fungerande kodsnutt men inblandad i min kod så visar det tokfel storlek.
'#Lägg till hela sökvägen till filen
Dim imageFullPathFile As String = Server.MapPath(loc & DB_Url)
Dim imageFullPathLocation As String = Server.MapPath(loc)
dim fullSizeImg As System.Drawing.Image
'#Öppna bilden. Kan egentligen behövas try-catch här
fullSizeImg = System.Drawing.Image.FromFile(imageFullPathFile)
'Förminska Bilden och skapa tummnaglar
Dim newImg As New Bitmap(fullSizeImg)
fullSizeImg.Dispose()
fullSizeImg = newImg
Dim decDiff As Decimal
Dim intMaxWidth As Integer = 640
Dim intMaxHeight As Integer = 480
'Bilden
'är bilden för stor? i så fall minskar vi storleken
If fullSizeImg.Width >= intMaxWidth Or fullSizeImg.Height >= intMaxHeight Then 'behöver bilden förminskas?
If fullSizeImg.Width > fullSizeImg.Height Then '4:3 "bred"
'thumbNailImg = fullSizeImg.GetThumbnailImage(100, 75, Nothing, IntPtr.Zero)
decDiff = fullSizeImg.Width / intMaxWidth
Dim NewHeight As Integer = fullSizeImg.Height / decDiff
fullSizeImg = fullSizeImg.GetThumbnailImage(intMaxWidth, NewHeight, Nothing, IntPtr.Zero)
Else '3:4 "hög"
'thumbNailImg = fullSizeImg.GetThumbnailImage(75, 100, Nothing, IntPtr.Zero)
decDiff = fullSizeImg.Height / intMaxHeight
Dim NewWidth As Integer = fullSizeImg.Width / decDiff
fullSizeImg = fullSizeImg.GetThumbnailImage(NewWidth, intMaxHeight, Nothing, IntPtr.Zero)
End If
'sparar bilden
Dim TheImageType As String = FindImageType(imgContentType) 'klippa ner "image/filtyp" till bara "filtyp"
If TheImageType = "jpeg" Then
fullSizeImg.Save(imageFullPathLocation & DB_Url, ImageFormat.Jpeg)
lblMessage.Text = lblMessage.Text & "jpeg-bilden var för stor och har nu förminskats" & "<br>"
Else If TheImageType = "gif" Then
fullSizeImg.Save(imageFullPathLocation & DB_Url, ImageFormat.Gif)
lblMessage.Text = lblMessage.Text & "gif-bilden var för stor och har nu förminskats" & "<br>"
End If
End If
'blaj, experimenterar lite här
Dim memStream As New MemoryStream()
fullSizeImg.Save(memStream, ImageFormat.Jpeg)
'Dim arrImage() As Byte = memStream.GetBuffer
'memStream.Close()
'response.write(arrImage.Length)
'Dim Thecount As Integer = 0
'While(Thecount < arrImage.Length)
' memStream.WriteByte(arrImage(Thecount))
' Thecount += 1
'End While
'response.write("<br>")
'response.write(arrImage(Thecount - 1).tostring)
'response.write("<br>")
'response.write(memStream.Length)
Dim buff As Byte() = memStream.ToArray()
response.write("<br>")
response.write(memStream.Length.ToString)