如何使用Java获取SWF文件的原始尺寸(宽度和高度)?

8
有没有一种方法可以使用Java知道SWF文件的原始宽度和高度?
int width, height;

// my stream contains an image or a swf file
InputStream stream = file.getInputStream();

// mediaType has been set with the help of file extension 
switch (mediaType)
{
    case IMAGE:
        BufferedImage img = ImageIO.read(stream);
        width = img.getWidth();
        height = img.getHeight();
        break;
    case FLASH:
        // what is the code here ?
        break;
}
2个回答

6

我看了brooksandrus的源代码,感觉有些失望,于是我写了自己的“一个顶级类”的解决方案。我知道这会让帖子变得有点长,但不知道如何以其他方式发布它。

这个类将只读取 SWF 文件头的足够信息以获取有关动画的基本元数据。
这是基于 SWF 文件格式规范(版本 10)。
可以通过路径字符串或 File 对象来获取 SWF 文件的头信息。
注意:我使用HTML等效项进行了尖括号的全局替换,以便正确显示此内容。如果您复制和粘贴它,希望您不必撤消该更改。

谢谢,我认为这是一个非常好的开端。我会尝试一下。 - Jerome Cance

1

嗯,对我来说,获取Flash文件的宽度和高度也很有趣。 虽然到目前为止我还没有找到一个简单的方法。

在短暂的谷歌搜索后,我偶然发现了这个:

http://www.brooksandrus.com/blog/2006/08/11/lightweight-swf-header-reader-java-ii/

这是一个允许你解析Flash文件头的库,但它已经过时了几年,评论表明它无法处理Flash 7及以上版本(这使得它现在几乎没用)。但也许稍加调整就可以使用。

不过我必须说,我没有尝试过那个库。

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接