J'ai donc le code ci-dessous qui marche très bien pour concaténer 2 images..... une Boucle et/ou une fonction récursive (tu joints tes deux premières images..puis tu joints cette nouvelle image à ta troisième..etc. (x foix)..)
Mais si j'ai x images scannées, comment puis-je faire pour concaténer ces x images ?
For i = 1 To j My.Computer.FileSystem.DeleteFile("C:\image" & i & ".TIF") Next.
Dim i As Integer i = i + 1 Dim img1, img2, img3 As Bitmap Dim Width As Integer Dim Height As Integer Dim x As Integer Dim y As Integer Result = EZTwain.AcquireToFileName(Me.Handle, "C:\image" & i & ".TIF") img1 = Image.FromFile("C:\image" & i & ".TIF") j = j + 1 encore: Select MsgBox("Continuer ?", MsgBoxStyle.YesNoCancel + MsgBoxStyle.DefaultButton1 + MsgBoxStyle.Information, "Scanner :") <gras>Case DialogResult.Yes</gras> i = i + 1 Result = EZTwain.AcquireToFileName(Me.Handle, "C:\image" & i & ".TIF") img2 = Image.FromFile("C:\image" & i & ".TIF") If img1.Width > img2.Width Then Width = img1.Width Else Width = img2.Width End If Height = img1.Height + img2.Height img3 = New Bitmap(Width, Height) For x = 0 To img1.Width - 1 For y = 0 To img1.Height - 1 img3.SetPixel(x, y, img1.GetPixel(x, y)) Next Next For x = 0 To img2.Width - 1 For y = 0 To img2.Height - 1 img3.SetPixel(x, y + img1.Height, img2.GetPixel(x, y)) Next Next img3.Save("C:\combine" & i & ".TIF") img1 = img3 img2.Dispose() j = j + 1 GoTo encore <gras>Case DialogResult.No</gras> img3 = img1 img3.Save(cheminScan & NomFichierScanne & ".TIF") If img1 IsNot Nothing Then img1.Dispose() img1 = Nothing End If If img3 IsNot Nothing Then img3.Dispose() img3 = Nothing End If <gras> Case DialogResult.Cancel</gras> annuler = True If img1 IsNot Nothing Then img1.Dispose() img1 = Nothing End If For i = 1 To j My.Computer.FileSystem.DeleteFile("C:\image" & i & ".TIF") Next For i = 2 To j My.Computer.FileSystem.DeleteFile("C:\combine" & i & ".TIF") Next i = 0 j = 0 Exit Sub End Select For i = 1 To j My.Computer.FileSystem.DeleteFile("C:\image" & i & ".TIF") Next For i = 2 To j My.Computer.FileSystem.DeleteFile("C:\combine" & i & ".TIF") Next i = 0 j = 0
'------ SCANNER --------------------- 'creer la variable recevant le scann Dim Result As Integer, f As Integer ' Create image. Result = EZTwain.AcquireToFileName(Me.Handle, "C:\image" & f & ".bmp") 'on ajouter l'image scannée dans une listbox ListBox1.Items.Add("C:\image" & f & ".bmp") encore: Select Case MsgBox("Continuer ?", MsgBoxStyle.YesNoCancel + MsgBoxStyle.DefaultButton1 + MsgBoxStyle.Information, "Scanner :") Case DialogResult.Yes f = f + 1 Result = EZTwain.AcquireToFileName(Me.Handle, "C:\image" & f & ".bmp") ListBox1.Items.Add("C:\image" & f & ".bmp") GoTo encore Case DialogResult.No Try Dim panelarr As New ArrayList For Each strpath As String In ListBox1.Items panelarr.Add(New Bitmap(strpath)) Next 'Create the BitMap File with first image Dim bmp As Image = panelarr.Item(0) Dim bmp As Image = panelarr.Item(0) Dim MasterBitmap As Bitmap = CType(bmp, Bitmap) 'Select the image encoder Dim enc As Encoder = Encoder.SaveFlag Dim info As ImageCodecInfo = Nothing Dim ice As ImageCodecInfo For Each ice In ImageCodecInfo.GetImageEncoders() If ice.MimeType = "image/tiff" Then info = ice End If Next ice Dim ep As New EncoderParameters(1) ep.Param(0) = New EncoderParameter(enc, CLng(EncoderValue.MultiFrame)) 'Save the master bitmap MasterBitmap.Save(cheminScan & NomFichierScanne & ".TIF", info, ep) ep.Param(0) = New EncoderParameter(enc, CLng(EncoderValue.FrameDimensionPage)) 'add all images from index 1 to n Dim i As Integer For i = 1 To (panelarr.Count) - 1 MasterBitmap.SaveAdd(CType(panelarr(i), Bitmap), ep) Next i ep.Param(0) = New EncoderParameter(enc, CLng(EncoderValue.Flush)) 'close out the file. MasterBitmap.SaveAdd(ep) i = 0 ' Shell("RunDll32.exe shimgvw.dll,ImageView_Fullscreen " + cheminScan & NomFichierScanne & ".TIF") 'Return Catch ee As System.Exception Throw New Exception(ee.Message & " Error in saving as multipage ") End Try Case DialogResult.Cancel annuler = True End Select Dim g As Integer For g = 0 To ListBox1.Items.Count - 2 File.Delete("C:\image" & g & ".bmp") Next Shell("RunDll32.exe shimgvw.dll,ImageView_Fullscreen " + cheminScan & NomFichierScanne & ".TIF")
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dim g As Integer 'nombre d'images
Dim nom As String 'chemin complet
For g = 0 To ListBox1.Items.Count - 1
nom = ListBox1.Items(g).ToString
File.Delete(nom)
Next
File.Delete("C:\image" & g & ".bmp")
Dim g As Integer
Dim nom As String
For g = 0 To ListBox1.Items.Count - 1
nom = ListBox1.Items(g).ToString
File.Delete("C:\image" & nom & ".bmp")
Next
listbox1.disposeou
me.disposetjrs un bugg !
'suppression fichier image
If File.Exists("chemin fichier") Then
Try
File.Delete("chemin fichier")
Catch ex As Exception
MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
Option Strict On
Imports System.IO
Public Class Form1
Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
supprimer("chemin fichier image.jpg", PictureBox1)
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
PictureBox1.Image = Image.FromFile("chemin fichier image.jpg.jpg")
End Sub
Private Sub supprimer(ByVal chemin As String, ByVal pic As PictureBox)
If Not (pic.Image Is Nothing) Then
pic.Image.Dispose()
pic.Image = Nothing
End If
' Créer le FileStream sur le fichier vimage
Dim MyStream As FileStream = New FileStream(chemin, FileMode.Open)
' affecter l'image à pictureBox
pic.Image = Image.FromStream(MyStream)
' libérer les ressources
MyStream.Close()
' supprimer le fichier vimage
File.Delete(chemin)
MessageBox.Show("Fichier supprimé ", "Suppression", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
End Class