登录
首页 >  Golang >  Go问答

如何在 Golang 中检查图像文件是否有动画?

来源:stackoverflow

时间:2024-04-10 19:09:34 376浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《如何在 Golang 中检查图像文件是否有动画?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我对 Go 还是个新手,我想将一个 Python 项目移植到其中。

该项目有几个要求,其中之一是将大量文件的信息存储到 SQLite 数据库中,这些信息包括:

  1. 文件的哈希值。
  2. 文件类型(如果是图像、视频、文档、代码等,仅根据其扩展名)。

如果文件类型为 image我需要知道图像是否为动画。我需要支持 .gif.webp.avif 扩展。

在Python中,我只是使用Pillow的seek方法来检查框架1是否存在。我正在使用pillow-avif-plugin 包为Pillow 添加avif 支持。这非常适合所有提到的图像格式。

是否可以在 Go 中做同样的事情?

我不想为每个文件调用外部程序,因为我认为这会损害性能。


正确答案


镜像包中有一个类型Paletted。您可以使用标准类型断言来检查此类型。

例如(其中 fileread 实现 io.reader):

import (
   "fmt"
   "log"
   "image"
    _ "image/png"
    _ "image/gif"
    _ "image/jpeg"
)
// ...
imageF, _, err = image.Decode(fileread)
if err != nil {
    log.Fatalf("Error with image decode")
}
switch imageF.(type) {
case *image.Paletted:
    fmt.Println("This can be a gif image")
// proceed with your code 
}

这绝对适用于 *.gif

本篇关于《如何在 Golang 中检查图像文件是否有动画?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>