wpf 获取MP3文件中的专辑图片!
来源:互联网 发布:安卓老版本软件 编辑:程序博客网 时间:2024/04/30 00:45
try
{
FileStream fs = new FileStream(@"D:\音乐\陈冠蒲 - 太多.mp3", FileMode.Open);
byte[] header = new byte[10]; //标签头
fs.Read(header, 0, 10);
string head = Encoding.Default.GetString(header, 0, 3);
if (head.Equals("ID3"))
{
int sizeAll = header[6] * 0x200000 //获取该标签的尺寸,不包括标签头
+ header[7] * 0x4000
+ header[8] * 0x80
+ header[9];
int size = 0;
byte[] body = new byte[10]; //数据帧头,这里认为数据帧头不包括编码方式
fs.Read(body, 0, 10);
head = Encoding.Default.GetString(body, 0, 4);
while (!("APIC".Equals(head))) //当数据帧不是图片的时候继续查找
{
size = body[size + 4] * 0x1000000 //(不包括帧头)
+ body[size + 5] * 0x10000
+ body[size + 6] * 0x100
+ body[size + 7];
body = new byte[size + 10];
fs.Read(body, 0, size + 10);
head = Encoding.Default.GetString(body, size, 4);
}
size = body[size + 4] * 0x1000000
+ body[size + 5] * 0x10000
+ body[size + 6] * 0x100
+ body[size + 7];
byte[] temp = new byte[4];
fs.Read(temp, 0, 4);
string tmp = Encoding.Default.GetString(temp);
while (!("JFIF".Equals(tmp))) //我发现一个规律就是所有在ID3v2中的图片都会有
{ //JFIF的标志,而图片开始的位置就是这个标志尾部
fs.Seek(-3, SeekOrigin.Current); //所在的字节位置-10,所以当获取到图片数据帧的
fs.Read(temp, 0, 4); //时候,要先查找这个位置,来获取图片
tmp = Encoding.Default.GetString(temp);
}
fs.Seek(-10, SeekOrigin.Current);
byte[] image = new byte[size];
fs.Read(image, 0, size);
MemoryStream ms = new MemoryStream(image);
BitmapImage newBitmapImage = new BitmapImage();
newBitmapImage.BeginInit();
newBitmapImage.StreamSource = ms;
newBitmapImage.EndInit();
image1.Source = newBitmapImage;
}
else { }
}
{
FileStream fs = new FileStream(@"D:\音乐\陈冠蒲 - 太多.mp3", FileMode.Open);
byte[] header = new byte[10]; //标签头
fs.Read(header, 0, 10);
string head = Encoding.Default.GetString(header, 0, 3);
if (head.Equals("ID3"))
{
int sizeAll = header[6] * 0x200000 //获取该标签的尺寸,不包括标签头
+ header[7] * 0x4000
+ header[8] * 0x80
+ header[9];
int size = 0;
byte[] body = new byte[10]; //数据帧头,这里认为数据帧头不包括编码方式
fs.Read(body, 0, 10);
head = Encoding.Default.GetString(body, 0, 4);
while (!("APIC".Equals(head))) //当数据帧不是图片的时候继续查找
{
size = body[size + 4] * 0x1000000 //(不包括帧头)
+ body[size + 5] * 0x10000
+ body[size + 6] * 0x100
+ body[size + 7];
body = new byte[size + 10];
fs.Read(body, 0, size + 10);
head = Encoding.Default.GetString(body, size, 4);
}
size = body[size + 4] * 0x1000000
+ body[size + 5] * 0x10000
+ body[size + 6] * 0x100
+ body[size + 7];
byte[] temp = new byte[4];
fs.Read(temp, 0, 4);
string tmp = Encoding.Default.GetString(temp);
while (!("JFIF".Equals(tmp))) //我发现一个规律就是所有在ID3v2中的图片都会有
{ //JFIF的标志,而图片开始的位置就是这个标志尾部
fs.Seek(-3, SeekOrigin.Current); //所在的字节位置-10,所以当获取到图片数据帧的
fs.Read(temp, 0, 4); //时候,要先查找这个位置,来获取图片
tmp = Encoding.Default.GetString(temp);
}
fs.Seek(-10, SeekOrigin.Current);
byte[] image = new byte[size];
fs.Read(image, 0, size);
MemoryStream ms = new MemoryStream(image);
BitmapImage newBitmapImage = new BitmapImage();
newBitmapImage.BeginInit();
newBitmapImage.StreamSource = ms;
newBitmapImage.EndInit();
image1.Source = newBitmapImage;
}
else { }
}
catch
{ }
来源:http啊://hi.啊baidu.com/dingguidong/item/4577681eb203b7fa9c778acc
0 0
- wpf 获取MP3文件中的专辑图片!
- 解析mp3文件,获得mp3中的专辑图片
- libZPlay获取MP3中的专辑图片并保存
- 获取mp3专辑图片的位置
- 读取MP3文件内的ID3V2专辑图片并显示
- python提取mp3专辑图片
- 获取MP3和M4A音乐文件的歌曲信息以及专辑图片
- 从MP3中读取专辑图片
- 通过MP3获取专辑背景图片(Bitmap)
- C#读取MP3文件的专辑图片和ID3V2Tag信息(带代码)
- android 完美获取音乐文件中的专辑图片并显示
- mp3 文件专辑封面 一点点知识
- wpf 获取一张图片中的一部分
- 获取MP3歌曲信息 歌曲名 歌手名 专辑等
- jaudiotagger获取MP3文件信息及封面图片
- 用id3lib提取mp3文件中的图片信息的实例
- 分别用ffmpeng和taglib开源库获取音频文件中的专辑封面图片
- android 获取音乐文件的内置专辑图片
- 你真的了解 console 吗
- 多边形重心
- 用CxImage在onSaveDocument()中保存图片
- 俄罗斯方块(二) 功能设计与实现
- 在jsp页面获取session内容并清除
- wpf 获取MP3文件中的专辑图片!
- 安装STS报错(一)
- 阿里云数据库开通内网连接后,外网访问连接内网数据库的实现
- linux下安装NS用久后出现,GDM无法写入您的认证文件,有这个问题的看过来哦!
- Cocos2dx 3.0配置环境
- asp.net dropdownlist (省市互动)注册用户
- 创建和使用Windows静态链接库
- Windows不能在本地计算机启动OracleDBConsoleorcl .错误代码2
- Java反射学习总结四(动态代理使用实例和内部原理解析)