网上找到的资料:
在wm/picture这个Descriptor中,它的值,即Descriptor Value,其内容与其它的Descriptor是不太一样的.具体内容依次如下:1. 图片类型 ID(0-20): 占用 1 byte
2. 图片数据长度: 占用 4 bytes
3. 图片 mime type: varies (end with 0x 00 00)
4. 图片描述(pic description): 占用 2 bytes
5. 实际图片数据需要注意的是,
图片数据长度读出来是二进制的字符,实质上是16进制的数据,我看的资料上写的是little endian,
但是我的测试结果是big endian。按照big endian规则读出数据,然后二进制转十六进制,十六进制转十进制,
就可以得到数据长度了。直接从二进制转十进制不行,为什么不行我不是太清楚,可能因为它本身是16进制的
数据。
图片 mime type是以"00 00"(16进制)结尾,一般的内容为"image/jpeg"这样的内容。
图片描述(pic description),同样是以“00 00”结尾,通常里面不含描述信息,而是直接“00 00”结束。
要得到需要的图片picture,只需要得到实际图片数据就可以了。现在问题:
怎么计算这个写入的图片长度,直接用 length() 或者 size 都是不行的。
我是业余学习 delphi 的,其他程序写的看不懂。

如果有人解决此大难问题,将赠分1000!

解决方案 »

  1.   

    现在研究得出,例如图片大小为 3474
    千千静听将此图片写入后:
    将会是 AF 0D 03 92 0D
    其中:
    92 0D 互换就是 0D 92,十六进制,转为十进制 就是 3474.03 可以随便改为 01-19 之间的数值,就是可能是代表图片 ID现在问题只剩下: AF 0D 是什么?怎么计算得到?
      

  2.   

    http://www.2ccc.com/article.asp?articleid=4882
    看看这个有没有帮助
      

  3.   

    你需要先了解wma文件格式,然后再提写入的问题
      

  4.   

    我已经大概知道WMA的格式,但是这里已经说了
    在wm/picture这个Descriptor中,它的值,即Descriptor Value,其内容与其它的Descriptor是不太一样的.
    所以,和其他帧不同,这里我就不懂怎么计算写入的图片长度值了,
    真心请教。