在Racket

时间:2017-06-02 21:56:59

标签: image racket

如何获取文件的类型,如果是图像,请获取其尺寸?

我想从磁盘读取文件,确定这些文件是否确实是图像,并获取它们的尺寸以确定它们是否符合我的程序标准。

我注意到racket/draw个包有bitmap%类型可以加载图片,但这似乎超出了我的任务范围,因为我认为将文件加载到drawable数据类型将超出我的内存使用目标并导致混乱的代码。另外,如果我使用它,我必须使用bitmap%的错误来筛选出不是图像的文件。

我还看到了一个操作png图像的包,但是,我想获得有关jpeg,gif和tiff的信息。

所以我的问题真的是两个问题 - 对于Racket来说有类似libmagic的东西,还有类似于Racket的imagemagick吗?

1 个答案:

答案 0 :(得分:1)

要确定文件类型,您可以

  • 查看文件扩展名

  • 读取文件的第一个字节,并与某些所选图像格式的幻数进行比较

关于幻数的信息:https://en.wikipedia.org/wiki/Magic_number_%28programming%29

另一种方法是使用外部实用程序file。该实用程序可在许多系统上使用。此手册页适用于Linux版本:https://linux.die.net/man/1/file

关于从jpeg文件中获取信息,请参阅此软件包:

https://pkgs.racket-lang.org/package/binary-class-exif