Scala检测一个Array[Byte]图像的MIME类型

3
我正在寻找一种在Scala中检测图像mimetype的方法,该图像以Array[Byte]形式表示。在Scala中是否有任何好的库可用于此?

1
使用Java库: https://dev59.com/y3VD5IYBdhLWcg3wNYxZ - flavian
2
不幸的是,我没有路径,只有字节数组,而且我不想在验证之前保存图像。 - sonix
@sonix,如果你往更深处看,你就会发现有利用数据流来检测文件类型的方法。那才是你需要的。 - Vladimir Matveev
1个回答

3
感谢您的信任。我使用以下代码解决了这个问题。
 def detectMimeType(bytes: Array[Byte]): Either[String, String] = {
    val c1 = if (bytes.length >= 1) bytes.apply(0) & 0xff else 0x00
    val c2 = ...

    if (c1 == 'G' && c2 == 'I' && c3 == 'F' && c4 == '8')
       Right("image/gif")
    else if (c1 == 137 && c2 == 80 && c3 == 78 && c4 == 71 && c5 == 13 && c6 == 10 && c7 == 26 && c8 == 10)
       Right("image/png")
    else if (c4 == 0xEE && c1 == 0xFF && c2 == 0xD8 && c3 == 0xFF)
      Right("image/jpg")
    else if (c1 == 0xFF && c2 == 0xD8 && c3 == 0xFF)
      Right("image/jpeg")
    else
      Left("unknown/unknown")
  }

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