minio上传生成缩略图
时间: 2023-11-09 11:56:20 浏览: 303
Minio是一个开源的对象存储服务器,支持HTTP和Amazon S3兼容API协议。要在Minio中上传并生成缩略图,可以使用Minio SDK或者Minio客户端。
1. 使用Minio SDK
使用Minio SDK可以在代码中直接上传并生成缩略图。
以下是一个Go语言的示例代码:
```go
package main
import (
"bytes"
"fmt"
"image/jpeg"
"log"
"os"
"github.com/disintegration/imaging"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
func main() {
endpoint := "s3.amazonaws.com"
accessKeyID := "ACCESS_KEY"
secretAccessKey := "SECRET_KEY"
useSSL := true
// Initialize minio client object.
minioClient, err := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
Secure: useSSL,
})
if err != nil {
log.Fatalln(err)
}
// Open image file.
file, err := os.Open("input.jpg")
if err != nil {
log.Fatalln(err)
}
defer file.Close()
// Decode JPEG image.
img, err := jpeg.Decode(file)
if err != nil {
log.Fatalln(err)
}
// Resize image.
resizedImg := imaging.Resize(img, 100, 0, imaging.Lanczos)
// Encode JPEG image.
buffer := new(bytes.Buffer)
err = jpeg.Encode(buffer, resizedImg, nil)
if err != nil {
log.Fatalln(err)
}
// Upload image.
_, err = minioClient.PutObject(context.Background(), "mybucket", "output.jpg", buffer, int64(buffer.Len()), minio.PutObjectOptions{})
if err != nil {
log.Fatalln(err)
}
}
```
该示例代码将打开名为“input.jpg”的JPEG图像文件,调整大小并生成缩略图,然后将其上传到名为“mybucket”的Minio存储桶中。
2. 使用Minio客户端
使用Minio客户端也可以上传并生成缩略图。
以下是一个示例命令:
```bash
mc cp input.jpg mybucket/output.jpg && mc mcdon mybucket/output.jpg --thumbnail 100x100
```
该命令将上传名为“input.jpg”的文件到名为“mybucket”的Minio存储桶中,并生成一个大小为100x100的缩略图。
阅读全文