TIFF MULTIPAGE

bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 8 juin 2007 à 15:44
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 11 juin 2007 à 15:14
Salut,

J'ai plusieurs images et je cherche à les regrouper au sien d'un fichier TIFF multipage à l'aide de GDI+

J'arrive très bien à créé un fichier TIFF ne contenant qu'une seule page, mais pour du multipage je peche.

J'ai trouvé de la doc à cette adresse mais :
   1 - C'est pas en français
   2 - C'est pas en VB

Si quelqu'un veut bien me donner un coup de main, ce serait vraiment sympa.

Bonne prog ++

4 réponses

cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 7
11 juin 2007 à 00:32
Salut,

Ce code peut peut-être t'aider.
Je suis parti du code trouvé sur la page http://www.bobpowell.net/addframes.htm.
Il créé une image "multi" de 1024*768 pixels (... à adapter) et l'enregistre dans un fichier "multicouche.tiff" en y insérant une série d'images supposées se trouver dans un tableau "layers" :

Dim encoders As System.Drawing.Imaging.ImageCodecInfo() = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders

Dim encoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.SaveFlag
Dim info As System.Drawing.Imaging.ImageCodecInfo = Nothing
For i As Integer = 0 To encoders.Length - 1 Step 1
    If encoders(i).MimeType = "image/tiff" Then
        info = encoders(i)
        Exit For
    End If
Next

Dim parameters As New System.Drawing.Imaging.EncoderParameters(1)
parameters.Param(0) = New System.Drawing.Imaging.EncoderParameter(encoder, CType(System.Drawing.Imaging.EncoderValue.MultiFrame, Long))

Dim multi As New System.Drawing.Bitmap(1024, 768)

'Enregistre l'image
multi.Save("multicouche.tiff", info, parameters)

'Enregistre les differentes couches
parameters.Param(0) = New System.Drawing.Imaging.EncoderParameter(encoder, CType(System.Drawing.Imaging.EncoderValue.FrameDimensionPage, Long))

For i As Integer = 0 To layer.Length - 1 Step 1
    multi.SaveAdd(layer(i), parameters)
Next

'Termine l'enregistrement
parameters.Param(0) = New System.Drawing.Imaging.EncoderParameter(encoder, CType(System.Drawing.Imaging.EncoderValue.Flush, Long))
multi.SaveAdd(parameters)
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
11 juin 2007 à 12:28
Salut,

Merci pour ce bout de code.

Cependant, j'essaie de réaliser cela en VB6 et non en .NET
Et, au vue du code je dirai que .NET fait cela en natif, or en VB6 j'ai impérativement besoin de faire cela à l'aide de GDI+

Bonne prog ++
0
cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 7
11 juin 2007 à 15:09
ok... désolé de ne pas pouvoir t'aider pour le VB6.
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
11 juin 2007 à 15:14
Merci à toi d'avoir essayé.

Je continue de chercher...

Bonne prog ++
0