V
Victory
Hi,
I just used VS2008 and migrated a project from 2005 to
2008. The reason is that MSDN docs is saying the Image
object in .NET Framework 3.5 has a Finalize method, which i
want to try out since my app is processing a few image
files and then saying it is running out of memory. I am
using the Dispose method of this object to get rid of it
and then setting it to Nothing. in any case, when i used VS
2008, intellisense still does not show the Finalize method
as one of the methods of the object. Any idea why it is
still using the Image object from .net framework 2.0?
Please see code below:
thanks,
Mars
Private Function EvaluateTiffImage(ByRef displayObject
As ThreadMessageClass, ByVal fileName As String, _
ByVal startingPageNum As String, ByVal fileExt As String)
As Boolean
Dim result As Boolean = False
' count of images in the tiff file
Dim imageIndex As Integer = 0
Dim propertyValues As Byte() = Nothing
Dim compressionString As String = ""
Dim compressionValue As Int16 = 0
Dim tiffImage As Image = Nothing
displayObject.TargetWindow =
DISPLAY_ID.LIST_PROGRESS
Dim tiffData As TiffProcessingDataClass =
displayObject.MessageData
Try
' using the Imaging Managed objects
tiffImage = Image.FromFile(fileName)
If Not (tiffImage Is Nothing) Then
Dim propertyItems As
System.Drawing.Imaging.PropertyItem() =
tiffImage.PropertyItems
For propertyIndex As Integer = 0 To
propertyItems.Length
' Compression property has an id of 259
If propertyItems(propertyIndex).Id() =
259 Then
' The value of which is mapped to a
short type (i.e. Int16)
propertyValues =
propertyItems(propertyIndex).Value
' most significant bit is at higher
index
compressionString =
propertyValues(1) & propertyValues(0)
compressionValue =
Convert.ToInt16(compressionString)
tiffData.ImageCompression =
compressionValue
If ((compressionValue =
IMAGE_COMPRESSION.COMPRESSION_CCITTFAX4) And (fileExt =
".tif")) Or _
((compressionValue =
IMAGE_COMPRESSION.COMPRESSION_HUFFMAN_CCITTRLE) And
(fileExt = ".jpg")) Then
result = True
displayObject.MessageText =
"...Found " & GetCompressionName(compressionValue) & "
Compression for: <" & fileName & ">."
Else
displayObject.MessageText =
"...Error: " & GetCompressionName(compressionValue) & "
Compression: <" & fileName & ">."
displayObject.IsError = True
End If
DisplayMessage(displayObject)
' found what we are looking for
Exit For
End If
Next
Application.DoEvents()
' release the reference to the image object
imageIndex += 1
Else
displayObject.MessageText = "...Error: GDI+
error was unable to create a document for <" & fileName &
">."
displayObject.IsError = True
DisplayMessage(displayObject)
End If
Catch ex As Exception
Dim innerExceptionString As String = Nothing
If ex.InnerException Is Nothing Then
innerExceptionString = "No inner exception"
Else
innerExceptionString =
ex.InnerException.InnerException.Message
End If
displayObject.MessageText = "An exception
occurred: <" & ex.Message & ">, this error happened when "
& _
"Procedo was trying to process file: <" & fileName & ">
inner exception: <" & _
innerExceptionString & ">."
displayObject.IsError = True
displayObject.TargetWindow =
DISPLAY_ID.LIST_RESULT
DisplayMessage(displayObject)
Finally
If tiffImage IsNot Nothing Then
' tiffImage.Finalize() this line has a
syntax error when it is uncommented
tiffImage.Dispose()
tiffImage = Nothing
End If
End Try
Return result
End Function
*** Sent via Developersdex http://www.developersdex.com ***
I just used VS2008 and migrated a project from 2005 to
2008. The reason is that MSDN docs is saying the Image
object in .NET Framework 3.5 has a Finalize method, which i
want to try out since my app is processing a few image
files and then saying it is running out of memory. I am
using the Dispose method of this object to get rid of it
and then setting it to Nothing. in any case, when i used VS
2008, intellisense still does not show the Finalize method
as one of the methods of the object. Any idea why it is
still using the Image object from .net framework 2.0?
Please see code below:
thanks,
Mars
Private Function EvaluateTiffImage(ByRef displayObject
As ThreadMessageClass, ByVal fileName As String, _
ByVal startingPageNum As String, ByVal fileExt As String)
As Boolean
Dim result As Boolean = False
' count of images in the tiff file
Dim imageIndex As Integer = 0
Dim propertyValues As Byte() = Nothing
Dim compressionString As String = ""
Dim compressionValue As Int16 = 0
Dim tiffImage As Image = Nothing
displayObject.TargetWindow =
DISPLAY_ID.LIST_PROGRESS
Dim tiffData As TiffProcessingDataClass =
displayObject.MessageData
Try
' using the Imaging Managed objects
tiffImage = Image.FromFile(fileName)
If Not (tiffImage Is Nothing) Then
Dim propertyItems As
System.Drawing.Imaging.PropertyItem() =
tiffImage.PropertyItems
For propertyIndex As Integer = 0 To
propertyItems.Length
' Compression property has an id of 259
If propertyItems(propertyIndex).Id() =
259 Then
' The value of which is mapped to a
short type (i.e. Int16)
propertyValues =
propertyItems(propertyIndex).Value
' most significant bit is at higher
index
compressionString =
propertyValues(1) & propertyValues(0)
compressionValue =
Convert.ToInt16(compressionString)
tiffData.ImageCompression =
compressionValue
If ((compressionValue =
IMAGE_COMPRESSION.COMPRESSION_CCITTFAX4) And (fileExt =
".tif")) Or _
((compressionValue =
IMAGE_COMPRESSION.COMPRESSION_HUFFMAN_CCITTRLE) And
(fileExt = ".jpg")) Then
result = True
displayObject.MessageText =
"...Found " & GetCompressionName(compressionValue) & "
Compression for: <" & fileName & ">."
Else
displayObject.MessageText =
"...Error: " & GetCompressionName(compressionValue) & "
Compression: <" & fileName & ">."
displayObject.IsError = True
End If
DisplayMessage(displayObject)
' found what we are looking for
Exit For
End If
Next
Application.DoEvents()
' release the reference to the image object
imageIndex += 1
Else
displayObject.MessageText = "...Error: GDI+
error was unable to create a document for <" & fileName &
">."
displayObject.IsError = True
DisplayMessage(displayObject)
End If
Catch ex As Exception
Dim innerExceptionString As String = Nothing
If ex.InnerException Is Nothing Then
innerExceptionString = "No inner exception"
Else
innerExceptionString =
ex.InnerException.InnerException.Message
End If
displayObject.MessageText = "An exception
occurred: <" & ex.Message & ">, this error happened when "
& _
"Procedo was trying to process file: <" & fileName & ">
inner exception: <" & _
innerExceptionString & ">."
displayObject.IsError = True
displayObject.TargetWindow =
DISPLAY_ID.LIST_RESULT
DisplayMessage(displayObject)
Finally
If tiffImage IsNot Nothing Then
' tiffImage.Finalize() this line has a
syntax error when it is uncommented
tiffImage.Dispose()
tiffImage = Nothing
End If
End Try
Return result
End Function
*** Sent via Developersdex http://www.developersdex.com ***