Convert bitmaps to one multipage TIFF image in .NET 2.0

后端 未结 7 2002
有刺的猬
有刺的猬 2020-11-27 11:29

How can i convert an array of bitmaps into a brand new image of TIFF format, adding all the bitmaps as frames in this new tiff image?

using .NET 2.0.

7条回答
  •  北荒
    北荒 (楼主)
    2020-11-27 12:19

    Here is how to do this in vb.net:

    Imports System.Drawing.Imaging
    
    Sub CreateTiff(sOutTiffFile As String, sInFile1 As String, sInFile2 As String)
        Dim bitmap As Bitmap = Image.FromFile(sInFile1)
        Dim byteStream As MemoryStream = New MemoryStream()
        bitmap.Save(byteStream, System.Drawing.Imaging.ImageFormat.Tiff)
    
        Dim tiff As Image = Image.FromStream(byteStream)
    
        Dim oParams As EncoderParameters = New EncoderParameters(2)
        oParams.Param(0) = New EncoderParameter(Imaging.Encoder.Compression, EncoderValue.CompressionCCITT4)
        oParams.Param(1) = New EncoderParameter(Imaging.Encoder.SaveFlag, EncoderValue.MultiFrame)
        tiff.Save(sOutTiffFile, GetEncoderInfo("image/tiff"), oParams)
    
        'Next Page
        Dim bitmap2 As Bitmap = Image.FromFile(sInFile2)
        oParams.Param(1) = New EncoderParameter(Imaging.Encoder.SaveFlag, EncoderValue.FrameDimensionPage)
        tiff.SaveAdd(bitmap2, oParams)
    
        'Flush 
        Dim oFlushParams As EncoderParameters = New EncoderParameters(1)
        oFlushParams.Param(0) = New EncoderParameter(Imaging.Encoder.SaveFlag, EncoderValue.Flush)
        tiff.SaveAdd(oFlushParams)
    End Sub
    
    Private Function GetEncoderInfo(mimeType As String) As System.Drawing.Imaging.ImageCodecInfo
        Dim encoders = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
        For i As Integer = 0 To encoders.Length - 1
            If encoders(i).MimeType = mimeType Then
                Return encoders(i)
            End If
        Next
        Return Nothing
    End Function
    

提交回复
热议问题