ZBLOG

go 目录下图片读取和生成略缩图实例

下面是一个使用Go语言读取目录下的图片并生成缩略图的示例代码:

  1. package main
  2. import (
  3. "fmt"
  4. "image"
  5. "image/jpeg"
  6. "io/ioutil"
  7. "os"
  8. "path/filepath"
  9. "github.com/nfnt/resize"
  10. )
  11. func generateThumbnail(inputPath string, outputPath string, maxWidth uint, maxHeight uint) error {
  12. // 打开原始图片文件
  13. inputFile, err := os.Open(inputPath)
  14. if err != nil {
  15. return err
  16. }
  17. defer inputFile.Close()
  18. // 读取图片数据
  19. img, _, err := image.Decode(inputFile)
  20. if err != nil {
  21. return err
  22. }
  23. // 等比例缩放图片尺寸
  24. resizedImg := resize.Thumbnail(maxWidth, maxHeight, img, resize.Lanczos3)
  25. // 创建输出文件
  26. outputFile, err := os.Create(outputPath)
  27. if err != nil {
  28. return err
  29. }
  30. defer outputFile.Close()
  31. // 将缩略图数据写入文件
  32. jpeg.Encode(outputFile, resizedImg, nil)
  33. return nil
  34. }
  35. func main() {
  36. dirPath := "./images" // 图片所在目录路径
  37. outputDir := "./thumbnails" // 生成的缩略图保存目录路径
  38. fileInfos, err := ioutil.ReadDir(dirPath)
  39. if err != nil {
  40. fmt.Println("无法读取目录:", dirPath)
  41. return
  42. }
  43. for _, fileInfo := range fileInfos {
  44. if !fileInfo.IsDir() && (filepath.Ext(fileInfo.Name()) == ".jpg" || filepath.Ext(fileInfo.Name()) == ".jpeg") {
  45. // 构造输入和输出路径
  46. inputFilePath := filepath.Join(dirPath, fileInfo.Name())
  47. outputFilePath := filepath.Join(outputDir, fileInfo.Name())
  48. // 生成缩略图
  49. err := generateThumbnail(inputFilePath, outputFilePath, 100, 100) // 缩略图尺寸为100x100
  50. if err != nil {
  51. fmt.Printf("无法生成缩略图: %s\n", err)
  52. } else {
  53. fmt.Printf("成功生成缩略图: %s\n", outputFilePath)
  54. }
  55. }
  56. }
  57. }

请确保在运行代码之前,你已经安装了 github.com/nfnt/resize 包(可以通过运行 go get github.com/nfnt/resize 命令来安装)。

以上代码将遍历指定目录下的图片文件(假设是 jpg/jpeg 格式),并为每个图片生成一个宽度和高度都为 100 像素的缩略图。缩略图将保存到指定的输出目录中,并打印出成功或失败的消息。你可以根据需要修改生成缩略图的尺寸和输入、输出路径。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=10227

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?