Multi-page TIFF with CCITT 4 Compression

RappyFood

Member
Joined
Jun 12, 2003
Messages
10
Location
Hampton, Virginia
I have written a simple app to take a collection of single-frame tiff images from file and combine them to a single multi-frame tiff. It works fine. Unfortunately, the multi-frame tiff is saved with LZW compression.

This app is meant to support an older process which can only read files with CCITT 4 compression.
My source code follows. Irrelevant code is removed for clarity.
It saves a multi-frame tiff with LZW compression.

Does anybody know how I can save a multi-frame tif with CCITT 4 compression?

I am using Visual Studio 2005 with .NET Framework 2.0

Private Sub MergeTifsWorker( _
ByVal SourceTifs As Collection, _
ByVal SaveName As String, _
ByVal AsyncOp As AsyncOperation)

Dim masterbm As Bitmap
Dim bm As Bitmap
Dim exc As Exception = Nothing

Try

masterbm = _
CType(Bitmap.FromFile(SourceTifs.Item(1).ToString), Bitmap)

Dim enc As Encoder = Encoder.SaveFlag
Dim info As ImageCodecInfo = GetEncoderInfo("image/tiff")

Dim ep As New EncoderParameters(1)
ep.Param(0) = _
New EncoderParameter(enc, CLng(EncoderValue.MultiFrame))
masterbm.Save(SaveName, info, ep)

ep.Param(0) = _
New EncoderParameter( _
enc, CLng(EncoderValue.FrameDimensionPage))

For i As Integer = 2 To fileCount
bm = CType(Bitmap.FromFile(SourceTifs.Item(i).ToString), Bitmap)
masterbm.SaveAdd(bm, ep)
Next

ep.Param(0) = _
New EncoderParameter(enc, CLng(EncoderValue.Flush))
masterbm.SaveAdd(ep)

Catch ex As Exception
exc = ex
End Try

.... Irrelevant code removed

End Sub


Regards,

RappyFood
 
Once more, with syntax highlighting.

RappyFood

[vbnet]
Private Sub MergeTifsWorker( _
ByVal SourceTifs As Collection, _
ByVal SaveName As String, _
ByVal AsyncOp As AsyncOperation)

Dim masterbm As Bitmap
Dim bm As Bitmap
Dim exc As Exception = Nothing

Try

masterbm = _
CType(Bitmap.FromFile(SourceTifs.Item(1).ToString), Bitmap)

Dim enc As Encoder = Encoder.SaveFlag
Dim info As ImageCodecInfo = GetEncoderInfo("image/tiff")

Dim ep As New EncoderParameters(1)
ep.Param(0) = _
New EncoderParameter(enc, CLng(EncoderValue.MultiFrame))
masterbm.Save(SaveName, info, ep)

ep.Param(0) = _
New EncoderParameter( _
enc, CLng(EncoderValue.FrameDimensionPage))

For i As Integer = 2 To fileCount
bm = CType(Bitmap.FromFile(SourceTifs.Item(i).ToString), Bitmap)
masterbm.SaveAdd(bm, ep)
Next

ep.Param(0) = _
New EncoderParameter(enc, CLng(EncoderValue.Flush))
masterbm.SaveAdd(ep)

Catch ex As Exception
exc = ex
End Try

Irrelevant code removed

End Sub
[/vbnet]
 
Back
Top