Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - info album art
Forum - C# / VB.NET - info album art

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
nightwolf (Normal User)
Pro


Messaggi: 149
Iscritto: 14/09/2010

Segnala al moderatore
Postato alle 13:01
Martedì, 31/10/2023
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

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1349
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 15:22
Martedì, 31/10/2023
Non si capisce cosa chiedi.
Le foto delle copertine ce le hai? oppure le devi recuperare da qualche sito?


in programmazione tutto è permesso
PM Quote
Avatar
nightwolf (Normal User)
Pro


Messaggi: 149
Iscritto: 14/09/2010

Segnala al moderatore
Postato alle 17:21
Martedì, 31/10/2023
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.

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1349
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 18:15
Martedì, 31/10/2023
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:
https://stackoverflow.com/questions/35103287/show-mp3-artwo ...


in programmazione tutto è permesso
PM Quote
Avatar
nightwolf (Normal User)
Pro


Messaggi: 149
Iscritto: 14/09/2010

Segnala al moderatore
Postato alle 18:46
Martedì, 31/10/2023
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?

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1349
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 23:14
Martedì, 31/10/2023
come aggiungi il file al mediaplayer è ininfluente.
Usi AxWMPLib o equivalente?

Posta il codice.


in programmazione tutto è permesso
PM Quote
Avatar
nightwolf (Normal User)
Pro


Messaggi: 149
Iscritto: 14/09/2010

Segnala al moderatore
Postato alle 10:55
Mercoledì, 01/11/2023
ecco il codice che uso
Codice sorgente - presumibilmente VB.NET

  1. Imports WMPLib
  2. Imports System.IO
  3. Imports TagLib.Id3v2
  4. Public Class media_pleyer
  5.     Dim numero As Integer
  6.     Dim canzoni() As String
  7.     Dim i As Integer
  8.     Dim musica As String
  9.     Dim indice As Integer
  10.     Dim playing As Boolean
  11.  
  12.     Private Sub Nexttrack()
  13.         indice = List_canzoni.SelectedIndex
  14.         indice = indice + 1
  15.         If indice = Label4.Text Then
  16.             indice = 0
  17.         End If
  18.         List_canzoni.SelectedIndex = indice
  19.  
  20.     End Sub
  21.  
  22.     Private Sub Previoustrack()
  23.         indice = List_canzoni.SelectedIndex
  24.         indice = indice - 1
  25.         If indice < 0 Then
  26.             indice = Label4.Text - 1
  27.         End If
  28.         List_canzoni.SelectedIndex = indice
  29.     End Sub
  30.     Private Sub Button5_Click(sender As Object, e As EventArgs) Handles btn_open.Click
  31.         AxWindowsMediaPlayer1.Visible = True
  32.         List_canzoni.Visible = True
  33.  
  34.         FolderBrowserDialog1.ShowDialog()
  35.         If FolderBrowserDialog1.SelectedPath = "" Then
  36.  
  37.             Exit Sub
  38.         Else
  39.             canzoni = System.IO.Directory.GetFiles(FolderBrowserDialog1.SelectedPath)
  40.  
  41.         End If
  42.         For i = 0 To canzoni.Length - 1
  43.             ListBox1.Items.Add(canzoni(i))
  44.             List_canzoni.Items.Add(System.IO.Path.GetFileName(canzoni(i)))
  45.         Next
  46.  
  47.         numero = List_canzoni.Items.Count
  48.         Label4.Text = numero
  49.         btn_play.Enabled = True
  50.  
  51.  
  52.     End Sub
  53.  
  54.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_play.Click
  55.         Timer2.Enabled = True
  56.         List_canzoni.SelectedIndex = 0
  57.         ListBox1.SelectedIndex = List_canzoni.SelectedIndex
  58.         musica = ListBox1.Text
  59.         AxWindowsMediaPlayer1.URL = musica
  60.         musica = ListBox1.SelectedItem
  61.         AxWindowsMediaPlayer1.URL = musica
  62.         lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name
  63.  
  64.     End Sub
  65.  
  66.     Private Sub Button6_Click(sender As Object, e As EventArgs) Handles btn_pause.Click
  67.         If playing Then
  68.             AxWindowsMediaPlayer1.Ctlcontrols.pause()
  69.         Else
  70.             AxWindowsMediaPlayer1.Ctlcontrols.play()
  71.         End If
  72.         playing = Not playing
  73.     End Sub
  74.  
  75.     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btn_stop.Click
  76.         AxWindowsMediaPlayer1.URL = ""
  77.         Timer2.Enabled = False
  78.         lb_title.Text = "Title"
  79.         Label3.Text = "00:00"
  80.         Label6.Text = "00:00"
  81.         TrackBar3.Value = 0
  82.     End Sub
  83.  
  84.     Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btn_next.Click
  85.         Nexttrack()
  86.         lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name
  87.     End Sub
  88.  
  89.     Private Sub Button4_Click(sender As Object, e As EventArgs) Handles btn_previous.Click
  90.         Previoustrack()
  91.         lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name
  92.     End Sub
  93.  
  94.     Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles trc_volume.Scroll
  95.         AxWindowsMediaPlayer1.settings.volume = trc_volume.Value
  96.         lb_volume.Text = trc_volume.Value.ToString + "%"
  97.     End Sub
  98.  
  99.     Private Sub media_pleyer_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  100.         List_canzoni.Visible = False
  101.         trc_volume.Value = AxWindowsMediaPlayer1.settings.volume
  102.         btn_play.Enabled = False
  103.         lb_volume.Text = "50%"
  104.  
  105.     End Sub
  106.     Private Sub Button9_Click(sender As Object, e As EventArgs) Handles btn_fullscreen.Click
  107.         AxWindowsMediaPlayer1.fullScreen = True
  108.     End Sub
  109.  
  110.     Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
  111.         Timer2.Interval = 60
  112.         Label3.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentPositionString
  113.         Label6.Text = AxWindowsMediaPlayer1.currentMedia.durationString
  114.  
  115.         Dim cur As Integer = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition
  116.         Dim len As Integer = AxWindowsMediaPlayer1.currentMedia.duration
  117.  
  118.         TrackBar3.Value = cur
  119.         TrackBar3.Maximum = len
  120.         If TrackBar3.Value = 100 Then
  121.             TrackBar3.Value = 0
  122.         End If
  123.  
  124.  
  125.     End Sub
  126.  
  127.     Private Sub AxWindowsMediaPlayer1_Enter(sender As Object, e As EventArgs) Handles AxWindowsMediaPlayer1.Enter
  128.         AxWindowsMediaPlayer1.fullScreen = False
  129.     End Sub
  130.  
  131.     Private Sub TrackBar3_Scroll(sender As Object, e As EventArgs) Handles TrackBar3.Scroll
  132.         AxWindowsMediaPlayer1.Ctlcontrols.currentPosition = TrackBar3.Value
  133.     End Sub
  134.     Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles List_canzoni.SelectedIndexChanged
  135.         Label2.Text = List_canzoni.SelectedIndex
  136.         ListBox1.SelectedIndex = List_canzoni.SelectedIndex
  137.         musica = ListBox1.Text
  138.         AxWindowsMediaPlayer1.URL = musica
  139.         Timer2.Enabled = True
  140.         lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name
  141.  
  142.  
  143.  
  144.     End Sub
  145.     Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  146.         Label7.Text = Now.Hour & ":" & Now.Minute & ":" & Now.Second
  147.     End Sub
  148.  
  149. End Class


PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1349
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 13:30
Mercoledì, 01/11/2023
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:
https://www.dropbox.com/scl/fi/v13u389a66nsd13bi0hk3/Media_ ...



Per completezza il codice:
Codice sorgente - presumibilmente VB.NET

  1. Imports System.IO
  2. Imports AxWMPLib
  3.  
  4. ' pacchetto NuGet: TagLibSharp oppure TagLibSharp-patched
  5. ' richiede Framework 4.6.2 o successivo
  6. ' Casella degli strumenti / Scegli elementi / Componenti COM / Windows Media Player (WMPLib.dll)
  7.  
  8. ' aggiungi cartelle e/o files con i tasti Add
  9. ' usa multiselezione con shift o ctrl
  10. ' esegui cliccando un brano in listBox
  11. ' al termine autoplay del prossimo brano in lista, se ultimo ricomincia dall'inizio
  12. ' cancella un brano, il prossimo andrà in play
  13. ' ridimensiona il form
  14. ' scegli lo spazio da dedicare alla listBox e pictureBox spostando la linea di separazione di splitContainer
  15.  
  16.  
  17. Partial Public Class Form1
  18.  
  19.     Private Sub axWindowsMediaPlayer1_PlayStateChange(ByVal sender As Object, ByVal e As _WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange
  20.         If CType(e.newState, WMPLib.WMPPlayState) = WMPLib.WMPPlayState.wmppsMediaEnded Then
  21.             ' il file è terminato
  22.             If ListBox1.SelectedIndex = -1 Then Return 'non ci sono files selezionati
  23.             Dim indice As Integer = ListBox1.SelectedIndex + 1 'prossimo
  24.             If indice > ListBox1.Items.Count - 1 Then indice = 0 'accapo
  25.             ListBox1.SelectedIndex = indice 'selezione prossimo
  26.             playFile(ListBox1.SelectedItem.ToString()) 'routine di play + immagine
  27.         End If
  28.     End Sub
  29.  
  30.     Private Sub butAddFolder_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButAdFolder.Click
  31.         If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then '// è stata scelta una cartella
  32.             ListBox1.Items.AddRange(Directory.GetFiles(FolderBrowserDialog1.SelectedPath, "*.mp3")) ' tutti gli mp3 in listBox
  33.         End If
  34.     End Sub
  35.  
  36.     Private Sub ButAddFile_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButAddFile.Click
  37.         OpenFileDialog1.RestoreDirectory = True 'parte da vecchia cartella
  38.         OpenFileDialog1.Filter = "File MP3 (*.mp3)|*.mp3|Tutti i file (*.*)|*.*"
  39.         OpenFileDialog1.Multiselect = True 'multiselezione attiva
  40.         If OpenFileDialog1.ShowDialog() = DialogResult.OK Then ' sono stati scelti dei file
  41.             ListBox1.Items.AddRange(OpenFileDialog1.FileNames) 'tutti i flies selezionati in listBox
  42.         End If
  43.     End Sub
  44.  
  45.     Private Sub listBox1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ListBox1.Click
  46.         If ListBox1.SelectedIndex = -1 Then Return 'nessun file selezionato
  47.         playFile(ListBox1.SelectedItem.ToString()) 'routine di play + immagine
  48.     End Sub
  49.  
  50.     Private Sub butEliminaSel_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButEliminaSel.Click
  51.         Dim indice As Integer = ListBox1.SelectedIndex 'salvo la posizione
  52.         If indice = -1 Then Return 'nessun file selezionato
  53.         ListBox1.Items.RemoveAt(indice) 'rimuovo il selezionato
  54.         If ListBox1.Items.Count = 0 Then Return 'la listBox è vuota
  55.         If indice > ListBox1.Items.Count - 1 Then indice = 0 'daccapo
  56.         ListBox1.SelectedIndex = indice 'selezione alla vecchia posizione
  57.         playFile(ListBox1.SelectedItem.ToString()) 'routine di play + immagine
  58.     End Sub
  59.  
  60.     Private Sub butEliminaAll_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButEliminaAll.Click
  61.         ListBox1.Items.Clear() 'svuota
  62.     End Sub
  63.  
  64.     Private Sub playFile(ByVal nome As String)
  65.         Me.BeginInvoke(New Action(Sub() '// chiamata crossthread, serve quando il play finisce senza intervento utente
  66.                                       Me.AxWindowsMediaPlayer1.URL = nome
  67.                                   End Sub))
  68.         Dim file As TagLib.File = TagLib.File.Create(nome) 'file per tagLib
  69.         Dim firstPicture As TagLib.IPicture = file.Tag.Pictures.FirstOrDefault() 'prima immagine incontrata
  70.         If firstPicture IsNot Nothing Then 'se l'immagine c'è
  71.             Dim bin As Byte() = firstPicture.Data.Data 'array di byte dell'immagine
  72.             PictureBox1.Image = Image.FromStream(New MemoryStream(bin)) 'immagine su pictureBox
  73.         Else
  74.             PictureBox1.Image = Nothing 'non c'è un'immagine nel file .mp3
  75.         End If
  76.     End Sub
  77. End Class


Ultima modifica effettuata da Carlo il 01/11/2023 alle 13:49


in programmazione tutto è permesso
PM Quote
Avatar
nightwolf (Normal User)
Pro


Messaggi: 149
Iscritto: 14/09/2010

Segnala al moderatore
Postato alle 19:21
Mercoledì, 01/11/2023
grazie mille, in parte funziona, nel senso che per vedere la copertina devo cliccare sulla listbox1, ( che contiene l intero percorso). mentre se metto il codice che mi serve ( la parte che riguarda playfile e listbox1_click nel list_canzoni) e clicco la musica nel list_canzoni mi da errore. non è possibile cliccare sulla lista che contiene solamente il nome del brano e vedere la copertina? o ce bisogno dell intero percorso?

Ultima modifica effettuata da nightwolf il 01/11/2023 alle 19:24
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo