Guten Abend!
Nachdem ich heute schon mehrere Stunden mit dem Problem verbracht habe und zu keiner Lösung gekommen bin, hier meine Frage in die Runde.
In ein Listbox werden sämtliche Fotos eines Verzeichnisses geladen(Eintrag ist der vollständige Pfad). Auf Knopfdruck soll für jede selektierte (oder auch generell jede Datei) Datei in der Listbox ein verkleinerter Thumbnail gespeichert werden. Das Speichern des Thumbnail funktioniert auch soweit, allerdings wird immer nur von der in der Listbox an oberster Stelle stehenden Datei ein Thumbnail abgespeichert(gut zu erkennen an der MsgBox mit dem Dateinamen), jedoch genau so oft, wie Dateien in der Listbox aufgelistet sind, wenn sich in dem Verzeichnis also 50 Fotos befinden wird 50x das zu oberst markierte Bild abgespeichert, jedesmal wie gewollt unter anterem Namen. Wenn ich die beiden Routinen jedoch ins ListBox1_SelectedIndexChanged-Ereignis reinstopfe wird bei jedem Klick auf eine der aufgelisteten Dateien der korrekte Thumbnail abgespeichert. Nur automatisch gehts eben nich... Wo hab ich den Fehler gemacht, warum bleibts beim 1. Eintrag hängen, und das so oft wie Einträge in der Listbox sind??
Aufruf der Schleife:
[highlight=vbnet]
For Each item As Object In ListBox1.SelectedItems
dateipfad = ListBox1.SelectedItem
MsgBox(dateipfad)
reading3()
adding()
Next
[/highlight]
Und hier die beiden aufgerufenen Routinen:
[highlight=vbnet]
Private Sub reading3()
PictureBox1.Image = Nothing
'Thumbnail generieren
extrainfos_read = New clsJPEGExtraInfos
Dim errorMessage As String = ""
If Not GetJPEGExtraInfos(dateipfad, extrainfos_read, errorMessage) Then
MessageBox.Show(errorMessage, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Else
Try
With extrainfos_read
PictureBox1.Image = .Thumbnail.Clone
End With
Catch ex As Exception
PictureBox1.Image = Nothing
End Try
End If
End Sub
Private Sub adding()
Dim fname As String
fname = ""
Dim bt As New Bitmap(PictureBox1.Image) ', 600, 800)
fname = "d:\Temp\" & getrandombystring("abcdefghijklmnopqrstuvwxyz", 6) & getrandombystring("0123456789", 6) & ".jpg"
bt.Save(fname, System.Drawing.Imaging.ImageFormat.Jpeg)
End Sub
[/highlight]
HILFE!!!
Nachdem ich heute schon mehrere Stunden mit dem Problem verbracht habe und zu keiner Lösung gekommen bin, hier meine Frage in die Runde.
In ein Listbox werden sämtliche Fotos eines Verzeichnisses geladen(Eintrag ist der vollständige Pfad). Auf Knopfdruck soll für jede selektierte (oder auch generell jede Datei) Datei in der Listbox ein verkleinerter Thumbnail gespeichert werden. Das Speichern des Thumbnail funktioniert auch soweit, allerdings wird immer nur von der in der Listbox an oberster Stelle stehenden Datei ein Thumbnail abgespeichert(gut zu erkennen an der MsgBox mit dem Dateinamen), jedoch genau so oft, wie Dateien in der Listbox aufgelistet sind, wenn sich in dem Verzeichnis also 50 Fotos befinden wird 50x das zu oberst markierte Bild abgespeichert, jedesmal wie gewollt unter anterem Namen. Wenn ich die beiden Routinen jedoch ins ListBox1_SelectedIndexChanged-Ereignis reinstopfe wird bei jedem Klick auf eine der aufgelisteten Dateien der korrekte Thumbnail abgespeichert. Nur automatisch gehts eben nich... Wo hab ich den Fehler gemacht, warum bleibts beim 1. Eintrag hängen, und das so oft wie Einträge in der Listbox sind??
Aufruf der Schleife:
[highlight=vbnet]
For Each item As Object In ListBox1.SelectedItems
dateipfad = ListBox1.SelectedItem
MsgBox(dateipfad)
reading3()
adding()
Next
[/highlight]
Und hier die beiden aufgerufenen Routinen:
[highlight=vbnet]
Private Sub reading3()
PictureBox1.Image = Nothing
'Thumbnail generieren
extrainfos_read = New clsJPEGExtraInfos
Dim errorMessage As String = ""
If Not GetJPEGExtraInfos(dateipfad, extrainfos_read, errorMessage) Then
MessageBox.Show(errorMessage, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Else
Try
With extrainfos_read
PictureBox1.Image = .Thumbnail.Clone
End With
Catch ex As Exception
PictureBox1.Image = Nothing
End Try
End If
End Sub
Private Sub adding()
Dim fname As String
fname = ""
Dim bt As New Bitmap(PictureBox1.Image) ', 600, 800)
fname = "d:\Temp\" & getrandombystring("abcdefghijklmnopqrstuvwxyz", 6) & getrandombystring("0123456789", 6) & ".jpg"
bt.Save(fname, System.Drawing.Imaging.ImageFormat.Jpeg)
End Sub
[/highlight]
HILFE!!!
Comment