【问题标题】:Is it possible to find an image file extension from its byte array contents? [duplicate]是否可以从其字节数组内容中找到图像文件扩展名? [复制]
【发布时间】:2014-12-13 02:37:37
【问题描述】:

已经将图像文件作为字节数组存储到数据库中,是否可以从字节数组内容中找到图像文件扩展名?

我可以从数据库中获取字节数组。我需要将图像文件显示到屏幕上。

在显示之前,我想有图片文件扩展名,如.png,.jpg.jpeg等。

【问题讨论】:

  • 不,不是原始文件扩展名(因为它可以是任何东西),但是您可以通过检查“幻数”找到图片类型:en.wikipedia.org/wiki/Magic_number_(programming)netspi.com/blog/entryid/185/…
  • 这取决于文件类型。其中一些会携带这些信息,而另一些则不会——这取决于格式。此外,每种格式都必须单独考虑,因为存储此信息的每种格式都会将其存储在与其他格式不同的位置。

标签: java database image bytearray


【解决方案1】:

大多数文件格式的开头都有一个“幻数”,以几个字节的形式表示它是什么文件。

GIF 以“GIF89a”或“GIF87a”开头,即字节 47,49,46,38,39,61 或 47,49,46,38,37,61(均为十六进制)

JPEG 以 FF,D8 开头,以 FF,D9 结尾

PNG 以 89,50,4E,47,0D,0A,1A,0A 开头

Wikipedia上查看有关幻数的更多信息

对于其他格式,您可以搜索幻数。不过有些没有。

【讨论】:

  • 缺少java类罚款0xCAFE BABE
【解决方案2】:

Java Mime Magic 库也可以在这里提供帮助(它是一个用于确定文件或流的 MIME 类型的 Java 库)。

https://github.com/arimus/jmimemagic

http://sourceforge.net/projects/jmimemagic/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2018-03-23
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多