Jag kör följande script för att skapa thumbnails "on the fly": Hej. Jag testade precis din kod med en bild som var 1.4mb utan några som helst problemSkapa bilder "on the fly" ger felet: out of memory
<code><%@ 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></code>
Jag anropar scriptet med följande syntax: http://www.sidan.nu/thumbnails.aspx?FileName=bildMapp/bilden.jpg&width=100&height=100
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?
/MattiasSv: Skapa bilder "on the fly" ger felet: out of memory
Jag kan inte direkt se något som skulle vara fel i din kod. Och om bilden bara är 1Mb så bör det heller inte bli några problem. Dock tar ju alltid en bild mer minne i minnet än 1MB då den oftast är komprimerad Så din bild kan mkt väl bli 2MB eller mer i minnet beroende på dess information/storlek etc. Får du samma fel om du använder någon annan bild i samma storlek?
//Johan NSv: Skapa bilder "on the fly" ger felet: out of memory
Vad kör du i för miljö?