东林博客

Golang遍历文件夹并获取图片像素大小

需求

朋友是小学教师,有一个小事让我帮忙处理一下,他管理的班级需要搜集学生学籍照片,有像素大小要求,一个一个查看太痛苦,让我做个小工具检测一下。

目标

生成一个exe工具,放到学生学籍照片文件夹内,可以检测到有多少张图片,并且检测每张图片的像素大小

实现

package main

import (
   "fmt"
   "image"
   "io/ioutil"
   "os"
   "strconv"
   "strings"
)
import _ "image/jpeg"
import _ "image/gif"
import _ "image/png"
func main()  {
   // 获取当前文件夹路径
   dir,_ := os.Getwd()
   // 读取当前文件夹的所有文件及文件夹
   files,_  := ioutil.ReadDir(dir)
   var imgs []os.FileInfo
   for _,f := range files{
      // 过滤,只找到JPG图片
      ok := strings.HasSuffix(f.Name(), ".jpg")
      if ok {
         imgs = append(imgs,f)
      }
   }
   count := strconv.Itoa(len(imgs))
   fmt.Println("共计找到"+count+"张照片")
   for _,img := range imgs{
      imgName := img.Name()
      imgRes,_ := os.Open(imgName)
      imgFile,_,err := image.DecodeConfig(imgRes)
      if err != nil{
         fmt.Println(err.Error())
      }
      width := strconv.Itoa(imgFile.Width)
      height := strconv.Itoa(imgFile.Height)
      fmt.Println("图片["+imgName+"] 宽:"+width+"像素:高:"+height+"像素")
   }
   fmt.Println("输入任意键关闭窗口")
   var a string
   fmt.Scan(&a)
}

值得注意的是,要引入

import _ "image/jpeg"
import _ "image/gif"
import _ "image/png"

不然得到的图片宽高为0

{{tip}}