I'm not sure what I think of this line. It is here, obviously, to support unsynchronized images.

It seems to me like you might want to treat the synchronized and unsynchronized cases differently later on and should return something here that will distinguish the two cases.  Maybe in the normal case you don't set a blob property. But you do set a blob in the unsynchronized case, and make it a blob that is already sliced so it is just the image?

The reason I say this is that if the image embedded in the music file is already the size we want, there shouldn't be any need to save it in an external file. In that case you can just save the offset and length and slice it out of the file.  But obviously you can't do this in the unsync case.