Oppure

Loading
31/10 12:01
nightwolf
buongiorno avrei bisogno di sapere se era possibile inserire in una picturebox la copertina dell album della canzone che sta suonando.
uso come risorsa per aprire la cartella folderbrowserdialog1, ho visto che con openfiledialog non ci sono problemi ma mettere in una listbox una canzone alla volta non mi piace, mentre con folderbrowserdialog1 è più semplice. perciò è possibile inserire la copertina della canzone che sta suonando nella picturebox?
grazie mille
aaa
31/10 14:22
Carlo
Non si capisce cosa chiedi.
Le foto delle copertine ce le hai? oppure le devi recuperare da qualche sito?
in programmazione tutto è permesso
31/10 16:21
nightwolf
Le foto delle copertine le ho, infatti se apro il windows media player di windows quando suona una canzone vedo la copertina,infatti volevo vedere quella copertina anche quando suona il mio mediaplayer. Solo che non come fare con folderbrowserdialog. Con openfiledialog non ho problemi.
aaa
31/10 17:15
Carlo
OpenFileDialog serve per selezionare uno o più files contenuti in una cartella.
FolderBrowserDialog serve per selezionare una cartella.

I files .mp3 possono contenere immagini (artwork), solitamente la copertina, qui per leggere l'immagine contenuta in un .mp3:
stackoverflow.com/questions/35103287/…
in programmazione tutto è permesso
31/10 17:46
nightwolf
Infatti, se utilizzo openfiledialog e seleziono il brano da suonare questo viene caricato nella listbox e mi compare la copertina nella picturebox, ma se carico le canzoni nella listbox attraverso folderbrowserdialog e dopo faccio suonare il mediaplayer selezionando una canzone dalla lista non compare la copertina. Io vorrei che quando seleziono una canzone dalla listbox questa oltre a suonare mi faccia comparire la copertina nella picturebox. Utilizzando folderbrowserdialog. È fattibile?
aaa
31/10 22:14
Carlo
come aggiungi il file al mediaplayer è ininfluente.
Usi AxWMPLib o equivalente?

Posta il codice.
in programmazione tutto è permesso
01/11 9:55
nightwolf
ecco il codice che uso
Imports WMPLib
Imports System.IO
Imports TagLib.Id3v2
Public Class media_pleyer
    Dim numero As Integer
    Dim canzoni() As String
    Dim i As Integer
    Dim musica As String
    Dim indice As Integer
    Dim playing As Boolean

    Private Sub Nexttrack()
        indice = List_canzoni.SelectedIndex
        indice = indice + 1
        If indice = Label4.Text Then
            indice = 0
        End If
        List_canzoni.SelectedIndex = indice

    End Sub

    Private Sub Previoustrack()
        indice = List_canzoni.SelectedIndex
        indice = indice - 1
        If indice < 0 Then
            indice = Label4.Text - 1
        End If
        List_canzoni.SelectedIndex = indice
    End Sub
    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles btn_open.Click
        AxWindowsMediaPlayer1.Visible = True
        List_canzoni.Visible = True

        FolderBrowserDialog1.ShowDialog()
        If FolderBrowserDialog1.SelectedPath = "" Then

            Exit Sub
        Else
            canzoni = System.IO.Directory.GetFiles(FolderBrowserDialog1.SelectedPath)

        End If
        For i = 0 To canzoni.Length - 1
            ListBox1.Items.Add(canzoni(i))
            List_canzoni.Items.Add(System.IO.Path.GetFileName(canzoni(i)))
        Next

        numero = List_canzoni.Items.Count
        Label4.Text = numero
        btn_play.Enabled = True


    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_play.Click
        Timer2.Enabled = True
        List_canzoni.SelectedIndex = 0
        ListBox1.SelectedIndex = List_canzoni.SelectedIndex
        musica = ListBox1.Text
        AxWindowsMediaPlayer1.URL = musica
        musica = ListBox1.SelectedItem
        AxWindowsMediaPlayer1.URL = musica
        lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name

    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles btn_pause.Click
        If playing Then
            AxWindowsMediaPlayer1.Ctlcontrols.pause()
        Else
            AxWindowsMediaPlayer1.Ctlcontrols.play()
        End If
        playing = Not playing
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btn_stop.Click
        AxWindowsMediaPlayer1.URL = ""
        Timer2.Enabled = False
        lb_title.Text = "Title"
        Label3.Text = "00:00"
        Label6.Text = "00:00"
        TrackBar3.Value = 0
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btn_next.Click
        Nexttrack()
        lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles btn_previous.Click
        Previoustrack()
        lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name
    End Sub

    Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles trc_volume.Scroll
        AxWindowsMediaPlayer1.settings.volume = trc_volume.Value
        lb_volume.Text = trc_volume.Value.ToString + "%"
    End Sub

    Private Sub media_pleyer_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        List_canzoni.Visible = False
        trc_volume.Value = AxWindowsMediaPlayer1.settings.volume
        btn_play.Enabled = False
        lb_volume.Text = "50%"

    End Sub
    Private Sub Button9_Click(sender As Object, e As EventArgs) Handles btn_fullscreen.Click
        AxWindowsMediaPlayer1.fullScreen = True
    End Sub

    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
        Timer2.Interval = 60
        Label3.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentPositionString
        Label6.Text = AxWindowsMediaPlayer1.currentMedia.durationString

        Dim cur As Integer = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition
        Dim len As Integer = AxWindowsMediaPlayer1.currentMedia.duration

        TrackBar3.Value = cur
        TrackBar3.Maximum = len
        If TrackBar3.Value = 100 Then
            TrackBar3.Value = 0
        End If


    End Sub

    Private Sub AxWindowsMediaPlayer1_Enter(sender As Object, e As EventArgs) Handles AxWindowsMediaPlayer1.Enter
        AxWindowsMediaPlayer1.fullScreen = False
    End Sub

    Private Sub TrackBar3_Scroll(sender As Object, e As EventArgs) Handles TrackBar3.Scroll
        AxWindowsMediaPlayer1.Ctlcontrols.currentPosition = TrackBar3.Value
    End Sub
    Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles List_canzoni.SelectedIndexChanged
        Label2.Text = List_canzoni.SelectedIndex
        ListBox1.SelectedIndex = List_canzoni.SelectedIndex
        musica = ListBox1.Text
        AxWindowsMediaPlayer1.URL = musica
        Timer2.Enabled = True
        lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name



    End Sub
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Label7.Text = Now.Hour & ":" & Now.Minute & ":" & Now.Second
    End Sub

End Class
aaa
01/11 12:30
Carlo
Ok visto funziona.
Dove vedevi l'immagine di copertina? nel lettore multimediale?

Se vuoi gestire le immagini contenute negli mp3 coma già ti avevo anticipato puoi usare TagLib, disponibile per Framework.Net, NetStandard, Core, ecc.

Ti posto un esempio commentato, ti sarà facile usare/modificare quello che ti serve:

Non posso allegare perché supera i 2MB, ecco il link dropBox, non serve che ti registri puoi annullare la richiesta:
dropbox.com/scl/fi/v13u389a66nsd13bi0hk3/…



Per completezza il codice:
Imports System.IO
Imports AxWMPLib

' pacchetto NuGet: TagLibSharp oppure TagLibSharp-patched
' richiede Framework 4.6.2 o successivo
' Casella degli strumenti / Scegli elementi / Componenti COM / Windows Media Player (WMPLib.dll)

' aggiungi cartelle e/o files con i tasti Add
' usa multiselezione con shift o ctrl
' esegui cliccando un brano in listBox
' al termine autoplay del prossimo brano in lista, se ultimo ricomincia dall'inizio
' cancella un brano, il prossimo andrà in play
' ridimensiona il form
' scegli lo spazio da dedicare alla listBox e pictureBox spostando la linea di separazione di splitContainer


Partial Public Class Form1

    Private Sub axWindowsMediaPlayer1_PlayStateChange(ByVal sender As Object, ByVal e As _WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange
        If CType(e.newState, WMPLib.WMPPlayState) = WMPLib.WMPPlayState.wmppsMediaEnded Then
            ' il file è terminato
            If ListBox1.SelectedIndex = -1 Then Return 'non ci sono files selezionati
            Dim indice As Integer = ListBox1.SelectedIndex + 1 'prossimo
            If indice > ListBox1.Items.Count - 1 Then indice = 0 'accapo
            ListBox1.SelectedIndex = indice 'selezione prossimo
            playFile(ListBox1.SelectedItem.ToString()) 'routine di play + immagine
        End If
    End Sub

    Private Sub butAddFolder_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButAdFolder.Click
        If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then '// è stata scelta una cartella
            ListBox1.Items.AddRange(Directory.GetFiles(FolderBrowserDialog1.SelectedPath, "*.mp3")) ' tutti gli mp3 in listBox
        End If
    End Sub

    Private Sub ButAddFile_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButAddFile.Click
        OpenFileDialog1.RestoreDirectory = True 'parte da vecchia cartella
        OpenFileDialog1.Filter = "File MP3 (*.mp3)|*.mp3|Tutti i file (*.*)|*.*"
        OpenFileDialog1.Multiselect = True 'multiselezione attiva
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then ' sono stati scelti dei file
            ListBox1.Items.AddRange(OpenFileDialog1.FileNames) 'tutti i flies selezionati in listBox
        End If
    End Sub

    Private Sub listBox1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ListBox1.Click
        If ListBox1.SelectedIndex = -1 Then Return 'nessun file selezionato
        playFile(ListBox1.SelectedItem.ToString()) 'routine di play + immagine
    End Sub

    Private Sub butEliminaSel_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButEliminaSel.Click
        Dim indice As Integer = ListBox1.SelectedIndex 'salvo la posizione
        If indice = -1 Then Return 'nessun file selezionato
        ListBox1.Items.RemoveAt(indice) 'rimuovo il selezionato
        If ListBox1.Items.Count = 0 Then Return 'la listBox è vuota
        If indice > ListBox1.Items.Count - 1 Then indice = 0 'daccapo
        ListBox1.SelectedIndex = indice 'selezione alla vecchia posizione
        playFile(ListBox1.SelectedItem.ToString()) 'routine di play + immagine
    End Sub

    Private Sub butEliminaAll_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButEliminaAll.Click
        ListBox1.Items.Clear() 'svuota
    End Sub

    Private Sub playFile(ByVal nome As String)
        Me.BeginInvoke(New Action(Sub() '// chiamata crossthread, serve quando il play finisce senza intervento utente
                                      Me.AxWindowsMediaPlayer1.URL = nome
                                  End Sub))
        Dim file As TagLib.File = TagLib.File.Create(nome) 'file per tagLib
        Dim firstPicture As TagLib.IPicture = file.Tag.Pictures.FirstOrDefault() 'prima immagine incontrata
        If firstPicture IsNot Nothing Then 'se l'immagine c'è
            Dim bin As Byte() = firstPicture.Data.Data 'array di byte dell'immagine
            PictureBox1.Image = Image.FromStream(New MemoryStream(bin)) 'immagine su pictureBox
        Else
            PictureBox1.Image = Nothing 'non c'è un'immagine nel file .mp3
        End If
    End Sub
End Class
Ultima modifica effettuata da Carlo 01/11 12:49
in programmazione tutto è permesso