【发布时间】:2022-01-13 22:22:19
【问题描述】:
我是 golang 新手,我正在尝试获取目录中列出的所有图像的图像大小。这就是我所做的
package main
import (
"fmt"
"image"
_ "image/jpeg"
"io/ioutil"
"os"
)
const dir_to_scan string = "/home/da/to_merge"
func main() {
files, _ := ioutil.ReadDir(dir_to_scan)
for _, filepath := range files {
if reader, err := os.Open(filepath.Name()); err != nil {
defer reader.Close()
im, _, err := image.DecodeConfig(reader)
if err != nil {
fmt.Fprintf(os.Stderr, "%s: %v\n", filepath.Name(), err)
continue
}
fmt.Printf("%s %d %d\n", filepath.Name(), im.Width, im.Height)
} else {
fmt.Println("Impossible to open the file")
}
}
}
当涉及到image.DecodeConfig 时,我有一个错误,上面写着image: unknown format
有人知道正确的方法吗?
在此处的文档中http://golang.org/src/pkg/image/format.go?s=2676:2730#L82 说我应该将io.Reader 作为参数传递,这就是我正在做的事情。
【问题讨论】:
-
filepath.Name()只产生文件名。不是它的完整路径。这可能是你的问题。尝试将filepath.Join(dir_to_scan, filepath.Name())传递给os.Open()。如果这不是问题,您可能正在尝试读取一些它不理解的奇怪图像格式。