如何在Elixir中检查图像的格式

6

假设我有一个文件存储在某个地方,它可以是jpeg文件或png文件,如何检查它是哪种类型的呢?

我应该简单地检查扩展名吗?还是应该读取文件的二进制标识符?或者我该怎么做呢?


这是一个非常宽泛的问题。我是说在没有其他任何标准的情况下,这两种方法都可以使用。比如说,“文件扩展名错误的可能性有多大?”如果文件扩展名错误的几率几乎为零,那就使用文件扩展名。但是如果没有一些进一步的标准来限定这个问题,很难说哪个“更好”。 - Onorio Catenacci
2个回答

10
< p >< em >更新:2026年4月2日,包括 .JPG 验证

有一个相当受欢迎的 hex 包Arc ,可能适合你。从 Arc 中提取:

def validate({file, _}) do
  ~w(.jpg .jpeg .gif .png .JPG) |> Enum.member?(Path.extname(file.file_name))
end

3
arc 的作者在这里,这个验证方法已经更新,现在会将路径转换为小写,所以 .JPG 文件也能匹配。 - Sean S

1
我猜你可以提取文件的魔数并进行分析。一旦你有格式规范,这就相当简单了。

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