Quick&Dirty kann man natürlich nach dem try-except-Teil mit TJpegImage das gleiche nochmal mit TPNGImage probieren. So mache ich das (noch) in meinem Player. Der Code stammt halt aus der Zeit, als TPicture das noch nicht konnte.
Muss ich mal umschreiben zu TPicture.LoadFromStream. Das sollte auch etwas schneller gehen.
Zur Zuverlässigkeit: das kannste bei ID3Tags sowieso knicken. Was ich da schon alles für Mist drin gefunden habe ... inklusive der Textkodierung "UTF-32, mit BOM, Zeichenweise." Oder evtl. wars auch zeichenweise nullterminiert UTF-16 mit bom. Auf jeden Fall 6 Byte pro Zeichen.
The angels have the phone box.