An exception of type 'System.UriFormatException' occurred in System.dll but was not handled in user code Additional information: Invalid URI: The Uri string is too long.
This happened to me when I was resizing an image, and did not put the image type when converting it to a byte array and then converting to base64.
Also was previously trying all sorts of ways to display this one image from the database. Turns out some person was directly dropping the image into the column through Access. Weirdly enough that way works in Crystal Reports, but I cannot get it to display on a web page no matter what I tried. Tried for something like 12 hours or so over 2-3 days, so there is something odd with that.
Should look something like these.
imgRepPic.ImageUrl = "data:image/jpeg;base64," & Convert.ToBase64String((DirectCast(dtPic(0)("repPic"), Byte())))
.....
Dim imgTemp As Image = ScaleImage(System.Drawing.Image.FromStream(stream), 100)
imgRepPicProportional.ImageUrl = "data:image/jpeg;base64," & Convert.ToBase64String((ImageToByteArray(imgTemp)))
....
Public Shared Function ScaleImage(curImage As System.Drawing.Image, maxHeight As Integer) As System.Drawing.Image
Dim ratio = CDbl(maxHeight) / curImage.Height
Dim newWidth = CInt(curImage.Width * ratio)
Dim newHeight = CInt(curImage.Height * ratio)
Dim newImage As New Bitmap(100, newHeight)
Using g = Graphics.FromImage(newImage)
g.DrawImage(curImage, 0, 0, newWidth, newHeight)
End Using
Return newImage
End Function
Public Function ImageToByteArray(imageIn As System.Drawing.Image) As Byte()
Dim ms As New MemoryStream()
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
Return ms.ToArray()
End Function
Also was previously trying all sorts of ways to display this one image from the database. Turns out some person was directly dropping the image into the column through Access. Weirdly enough that way works in Crystal Reports, but I cannot get it to display on a web page no matter what I tried. Tried for something like 12 hours or so over 2-3 days, so there is something odd with that.
Should look something like these.
imgRepPic.ImageUrl = "data:image/jpeg;base64," & Convert.ToBase64String((DirectCast(dtPic(0)("repPic"), Byte())))
.....
Dim imgTemp As Image = ScaleImage(System.Drawing.Image.FromStream(stream), 100)
imgRepPicProportional.ImageUrl = "data:image/jpeg;base64," & Convert.ToBase64String((ImageToByteArray(imgTemp)))
....
Public Shared Function ScaleImage(curImage As System.Drawing.Image, maxHeight As Integer) As System.Drawing.Image
Dim ratio = CDbl(maxHeight) / curImage.Height
Dim newWidth = CInt(curImage.Width * ratio)
Dim newHeight = CInt(curImage.Height * ratio)
Dim newImage As New Bitmap(100, newHeight)
Using g = Graphics.FromImage(newImage)
g.DrawImage(curImage, 0, 0, newWidth, newHeight)
End Using
Return newImage
End Function
Public Function ImageToByteArray(imageIn As System.Drawing.Image) As Byte()
Dim ms As New MemoryStream()
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
Return ms.ToArray()
End Function
Comments
Post a Comment