You need to enable JavaScript to run this app.
导航

获取图片信息(Go SDK)

最近更新时间2024.02.04 18:31:08

首次发布时间2023.10.12 11:15:43

获取图片信息功能可以获取到图片的基本信息,包括图片的长、宽、大小和格式。如果图片包含 Exif 信息,将按照 JSON 格式返回内容。本文介绍如何通过 TOS Go SDK 获取图片信息。

示例代码

以下代码展示如何获取图片信息。

package main

import (
    "context"
    "encoding/json"
    "fmt"
    "github.com/volcengine/ve-tos-golang-sdk/v2/tos"
    "io/ioutil"
)

type ImageInfo struct {
    FileSize struct {
       Value string `json:"value"`
    } `json:"FileSize"`
    Format struct {
       Value string `json:"value"`
    } `json:"Format"`
    ImageHeight struct {
       Value string `json:"value"`
    } `json:"ImageHeight"`
    ImageWidth struct {
       Value string `json:"value"`
    } `json:"ImageWidth"`
}

func checkErr(err error) {
    if err != nil {
       if serverErr, ok := err.(*tos.TosServerError); ok {
          fmt.Println("Error:", serverErr.Error())
          fmt.Println("Request ID:", serverErr.RequestID)
          fmt.Println("Response Status Code:", serverErr.StatusCode)
          fmt.Println("Response Header:", serverErr.Header)
          fmt.Println("Response Err Code:", serverErr.Code)
          fmt.Println("Response Err Msg:", serverErr.Message)
       } else {
          fmt.Println("Error:", err)
       }
       panic(err)
    }
}

func main() {
    var (
       accessKey = os.Getenv("TOS_ACCESS_KEY")
       secretKey = os.Getenv("TOS_SECRET_KEY")
       // Bucket 所在区域对应的 Endpoint,如果以华北2(北京)为例,则 Endpoint 为 https://tos-cn-beijing.volces.com。
       endpoint = "https://tos-cn-beijing.volces.com"
       region   = "cn-beijing"
       // 填写 BucketName
       bucketName = "*** Provide your bucket name ***"

       // 图片名称
       imageKey = "image.png"
       ctx      = context.Background()
    )
    // 初始化客户端
    client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey)))
    checkErr(err)

    // 请求并增加数据处理
    style := "image/info" /* 获取图片元信息 */
    out, err := client.GetObjectV2(ctx, &tos.GetObjectV2Input{Bucket: bucketName, Key: imageKey, Process: style})
    checkErr(err)
    defer out.Content.Close()
    fmt.Println("ContentType:", out.ContentType)
    info, err := ioutil.ReadAll(out.Content)
    checkErr(err)
    imageInfo := &ImageInfo{}
    err = json.Unmarshal(info, imageInfo)
    checkErr(err)
    fmt.Println("ImageInfo FileSize:", imageInfo.FileSize.Value, " Format:", imageInfo.Format.Value, " ImageHeight:", imageInfo.ImageHeight.Value, " ImageWidth:", imageInfo.ImageWidth.Value)
}

相关文档

关于获取图片信息的详细介绍,请参见获取信息