kör följande script för att skapa thumbnails "on the fly":
<%@ Import Namespace=System.Drawing %>
<%@ Import Namespace=System %>
<%@ Import Namespace=System.Web %>
<script language="VB" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
Dim orginalimg, thumb As System.Drawing.Image
Dim FileName As String
Dim inp As New IntPtr()
Dim width, height As Integer
Dim rootpath As String
rootpath = Server.MapPath("/") ' Get Root Application Folder
FileName = rootpath & Request.QueryString("FileName") ' Root Folder + FileName
'Response.Write(FileName)
'Response.End
'Try
orginalimg = orginalimg.FromFile(FileName) ' Fetch User Filename
'Catch
'orginalimg = orginalimg.FromFile(rootpath & "grfx/flaggor/sverigefla.gif") ' Fetch error.gif
'End Try
' Get width using QueryString.
If Request.QueryString("width") = Nothing Then
width = orginalimg.Width ' Use Orginal Width.
ElseIf Request.QueryString("width") = 0 Then ' Assign default width of 100.
width = 100
Else
width = Request.QueryString("width") ' Use User Specified width.
End If
' Get height using QueryString.
If Request.QueryString("height") = Nothing Then
height = orginalimg.Height ' Use Orginal Height.
ElseIf Request.QueryString("height") = 0 Then ' Assign default height of 100.
height = 100
Else
height = Request.QueryString("height") ' Use User Specified height.
End If
thumb = orginalimg.GetThumbnailImage(width, height, Nothing, inp)
' Sending Response JPEG type to the browser.
If lCase(Right(FileName,3)) <> "gif" Then
Response.ContentType = "image/jpeg"
thumb.Save(Response.OutputStream, Imaging.ImageFormat.Jpeg)
Else
Response.ContentType = "image/Gif"
thumb.Save(Response.OutputStream, Imaging.ImageFormat.Gif)
End If
' Disposing the objects.
orginalimg.Dispose()
thumb.Dispose()
End Sub
</script>
Detta funkar fint i bland, och sämre andra gånger. Felmeddelandet som dyker upp är:
Out of memory.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.OutOfMemoryException: Out of memory.
Är bilden för stor för att läsas in i minnet? Den är inte över 1MB.. så varför blir det såhär? Var sätts dessa storleksbegränsningar? Och hur kan jag påverka det?
Hade ett liknande problem förut och det var när jag försökte skapa .png filger. Då kunde jag inte skriva bilden direkt till Response.OutputStream utan behövde spara bilden i en MemoryStream som jag senare skrev till Response.OutputStream.
Om inte teckensnittet finns installerat på servernkan du använda klassen PrivateFontCollection som ligger i System.Drawing.Text och sedan använda AddFontFile(ByVal Filename As String) för att ange sökvägen till teckensnittet.