Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajout d'images dans un fichier TIFF

2 réponses
Avatar
alan
Bonjour.
J'ai plusieurs images (dans un tableau d'objets image) que je veux ajouter
dans un seul (en utilisant le format TIFF).
Le problème, c'est que l'aide MSDN ne donne aucun exemple, et que je
n'arrive pas à faire fonctionner la méthode SaveAdd (Img, EncoderParameter)
parce que je ne sais pas quoi mettre dans EncoderParameter.
Si vous avez des bouts de code, merci par avance

2 réponses

Avatar
TroXsA - [VB.NET-2005]
Il faut pas mettre une valeurs de type Bytes, il faut utiliser la class
Encoding et faire un GetBytes je crois ...

Pourrais tu mettre le lien du MSDN (merci)

@+

--
TroXsA
http://cerbermail.com/?rIXgaw9Xsl
Avatar
alan
Tiens, si ca peut t'aider, ca marche impec


Private Function Charge_Fichier(ByVal xView As DataView) As String
Dim NomFichier As String = ""
If Not IO.Directory.Exists("c:Temp") Then
Try
IO.Directory.CreateDirectory("c:temp")
Catch ex As Exception
MyLog.WriteEntry("Echec de création du répertoire
temporaire! Fax non envoyé", EventLogEntryType.Error)
Return ""
End Try
End If
If (xView.Count > 1) And
(xView(0)("NomFichier").ToString.ToLower.EndsWith("jpg")) Then 'Images, a
réunir en 1
Dim xImg() As Image
Dim IdxImg As Integer = 0
Dim xFile As String = "c:Temp" &
xView(0)("NomFichier").ToString.ToLower
xFile = xFile.Substring(0, xFile.LastIndexOf(".")) & ".tif"
If IO.File.Exists(xFile) Then
Try
IO.File.Delete(xFile)
Catch ex As Exception
MyLog.WriteEntry(("Erreur de suppression du fichier
existant!" & vbCrLf & ex.ToString).Substring(211), EventLogEntryType.Error)
End Try
End If
Dim Info As ImageCodecInfo = Nothing 'Recherche du codec "tiff"
For Each ICE As ImageCodecInfo In ImageCodecInfo.GetImageEncoders
If ICE.MimeType.ToLower.Trim = "image/tiff" Then
Info = ICE
Exit For
End If
Next ICE
Dim enc As Encoder = Encoder.SaveFlag
Dim ep As New EncoderParameters(1)
ep.Param(0) = New EncoderParameter(enc,
CLng(EncoderValue.MultiFrame)) 'Preparation de l'encodeur
Dim Pages As Bitmap = Nothing
Dim Frame As Integer = 0
For xCpt As Integer = 0 To xView.Count - 1
Try
If Not IsDBNull(xView(xCpt)("P_Jointe")) Then
Dim Datas() As Byte = xView(xCpt)("P_Jointe")
Dim xStream As New IO.MemoryStream(datas)
If Frame = 0 Then 'Premiere image
Pages = Image.FromStream(xstream)
Pages.Save(xFile, Info, ep)
Else
Dim bm As Bitmap = Image.FromStream(xstream)
'Ajouts au tiff
ep.Param(0) = New EncoderParameter(enc,
CLng(EncoderValue.FrameDimensionPage))
Pages.SaveAdd(bm, ep)
End If
Frame += 1
xstream.Close()
End If
Catch ex As Exception
End Try
If xCpt = xView.Count - 1 Then 'Dernière image, sauvegarde
finale
ep.Param(0) = New EncoderParameter(enc,
CLng(EncoderValue.Flush))
Pages.SaveAdd(ep)
End If
Next
Return xFile
Else 'Sinon : envoi 1er fichier seulement
If Not IsDBNull(xView(0)("P_Jointe")) Then 'Pièce jointe non nulle
NomFichier = "c:Temp" & xView(0)("NomFichier")
Try
Dim xStream As New IO.FileStream(NomFichier,
IO.FileMode.Create)
Dim Datas() As Byte = xView(0)("P_Jointe")
xStream.Write(Datas, 0, Datas.Length)
xStream.Close()
Return NomFichier
Catch ex As Exception
MyLog.WriteEntry(("Erreur de création du fichier" &
vbCrLf & ex.ToString).Substring(0, 211), EventLogEntryType.Error)
Return ""
End Try
Else
Return ""
End If
End If
End Function



"TroXsA - [VB.NET-2005]" a écrit :

Il faut pas mettre une valeurs de type Bytes, il faut utiliser la class
Encoding et faire un GetBytes je crois ...

Pourrais tu mettre le lien du MSDN (merci)

@+

--
TroXsA
http://cerbermail.com/?rIXgaw9Xsl