I first take a mult-page tiff and add some text to it, and when i save
it only saves the first page, when i try to go back and add the extra
pages or save the new file as mult-page it craps out on me - here is
the code
Imports System.IO
Imports System.Drawing
Imports System.Drawing.Image 'From File
Imports System.Drawing.Imaging
Public Class AddICN
Dim intPageCount As Integer
Dim intPageCountT As Integer
Dim intP As Integer
Dim encParamsCompress As EncoderParameters
Dim encParamsMulti As EncoderParameters
Dim encParamsAddFrame As EncoderParameters
Dim encParamsCloseFrame As EncoderParameters
Dim encCompress As Encoder
Dim encSave As Encoder
Dim oFDimension As System.Drawing.Imaging.FrameDimension
Public Function AddICNToImage(ByVal strInputpath As String, ByVal
strOutputPath As String, ByVal strICN As String, ByVal bolPosition As
Boolean)
Dim dSize As System.Drawing.Size
Dim dImage As Image = FromFile(strInputpath)
Dim Fnt
Dim LeftPos
Dim TopPos
Dim strSize As SizeF
Dim FontColor
Dim FntStyle As FontStyle
Dim FontSize As Integer
Dim FontName As String
Dim FontColors As String
dSize.Height = dImage.Height
dSize.Width = dImage.Width
'Encoder Parameters
encParamsCompress = New EncoderParameters(1)
encParamsMulti = New EncoderParameters(2)
encParamsAddFrame = New EncoderParameters(1)
encParamsCloseFrame = New EncoderParameters(1)
encCompress = New Encoder(Encoder.Compression.Guid)
encSave = New Encoder(Encoder.SaveFlag.Guid)
encParamsCompress.Param(0) = New EncoderParameter(encCompress,
EncoderValue.CompressionCCITT4)
encParamsMulti.Param(0) = New EncoderParameter(encCompress,
EncoderValue.CompressionCCITT4)
encParamsMulti.Param(1) = New EncoderParameter(encSave,
EncoderValue.MultiFrame)
encParamsAddFrame.Param(0) = New EncoderParameter(encSave,
EncoderValue.FrameDimensionPage)
encParamsCloseFrame.Param(0) = New EncoderParameter(encSave,
EncoderValue.Flush)
'End Encoder Parameters
'Get Page Count of Original File
oFDimension = New
System.Drawing.Imaging.FrameDimension(dImage.FrameDimensionsList(0))
intPageCount = dImage.GetFrameCount(oFDimension)
'End Get Page Count
Dim Imgo As New System.Drawing.Bitmap(dImage, dSize)
Dim gImage As System.Drawing.Graphics =
System.Drawing.Graphics.FromImage(Imgo)
FontSize = 28
FontName = "Microsoft Sans Serif"
FntStyle = FontStyle.Italic
FontColors = "00,00,00"
FontColor = Split(FontColors, ",")
Fnt = New Font(FontName, FontSize, FntStyle)
If bolPosition = True Then 'Write ICN on Top of Image
strSize = gImage.MeasureString(strICN, Fnt)
Else 'Write ICN on Side of Image
Dim Counter As Integer
Dim Str As String = ""
For Counter = 0 To strICN.Length - 1
Str &= strICN.Chars(Counter) & vbCrLf
Next
strICN = Str
strSize = gImage.MeasureString(strICN, Fnt)
End If
If bolPosition = True Then 'Position of ICN
TopPos = 10
LeftPos = 650
Else 'Position of ICN
TopPos = 650
LeftPos = 1650
End If
'Write ICN on Image
gImage.DrawString(strICN, Fnt, New
SolidBrush(Color.FromArgb(CInt(FontColor(0)), CInt(FontColor(1)),
CInt(FontColor(2)))), New PointF(LeftPos, TopPos))
'Save Image Not sure past this point
Imgo.Save(strOutputPath, ImageFormat.Tiff)
For intP = 2 To intPageCount - 1
'select next frame and do image.saveadd
dImage.SelectActiveFrame(oFDimension, intP)
'dImage.SaveAdd(dImage, encParamsAddFrame)
dTempI.SaveAdd(dImage, encParamsAddFrame)
Next
dImage.SaveAdd(encParamsCloseFrame)
gImage.Dispose()
Imgo.Dispose()
'If intPageCount < 1 Then
'AddExtraPages()
'End If
End Function
'Private Function AddExtraPages()
' Dim ImageMult As Image = Image.FromFile(strOP)
' Dim ImageEP As Image = Image.FromFile(strIP)
'
' encParamsCompress = New
System.Drawing.Imaging.EncoderParameters(1)
' encParamsMulti = New
System.Drawing.Imaging.EncoderParameters(2)
' encParamsAddFrame = New
System.Drawing.Imaging.EncoderParameters(1)
' encParamsCloseFrame = New
System.Drawing.Imaging.EncoderParameters(1)
'
' encCompress = New
Encoder(System.Drawing.Imaging.Encoder.Compression.Guid)
' encSave = New
Encoder(System.Drawing.Imaging.Encoder.SaveFlag.Guid)
'
' encParamsCompress.Param(0) = New
EncoderParameter(encCompress, EncoderValue.CompressionCCITT4)
'
' encParamsMulti.Param(0) = New
EncoderParameter(encCompress, EncoderValue.CompressionCCITT4)
' encParamsMulti.Param(1) = New EncoderParameter(encSave,
EncoderValue.MultiFrame)
'
' encParamsAddFrame.Param(0) = New
EncoderParameter(encSave, EncoderValue.FrameDimensionPage)
'
' encParamsCloseFrame.Param(0) = New
EncoderParameter(encSave, EncoderValue.Flush)
'
'
' oFDimension = New
System.Drawing.Imaging.FrameDimension(ImageEP.FrameDimensionsList(0))
'
' intPageCount = ImageEP.GetFrameCount(oFDimension)
'
' strOP = "C:\Documents and
Settings\tsaunde\Desktop\hello_temp.tiff"
'
' ImageMulti.Save(strOP, GetCodecInfo(ImageFormat.Tiff),
encParamsMulti)
'
' Dim intP As Integer
'
' If intPageCount <> 0 Then
' For intP = 2 To intPageCount - 1
' 'select next frame and do image.saveadd
' ImageEP.SelectActiveFrame(oFDimension, intP)
' ImageEP.SaveAdd(ImageEP, encParamsAddFrame)
' Next
' ImageEP.SaveAdd(encParamsCloseFrame)
' End If
'
' 'End New Stuff
' End Function
Private Shared Function GetCodecInfo(ByVal format As ImageFormat)
As ImageCodecInfo
Dim codecs As ImageCodecInfo()
Dim codec As ImageCodecInfo
Dim clsid As Guid
Dim i As Integer
clsid = format.Guid
codecs = ImageCodecInfo.GetImageEncoders()
For Each codec In codecs
If clsid.Equals(codec.FormatID) Then Return codec
Next
End Function