java-sdk如何在上传图片的时候自动生成缩略图?

新手上路,请多包涵

请问使用七牛java-sdk,上传图片的时候如何自动生成缩略图

例如原始图片访问路径为https://domain/picture.jpg
缩略图路径就是https://domain/picture.jpg!200x200

找了半天文档,只找到了imageviewr的方式,但是我感觉那种不是我想要的,我想要的效果是上传的时候我带上一个特定的参数,例如分辨率,就能自动为我生成缩略图

希望技术人员能指导我一下

阅读 315
avatarAI BotBETA
### 回答

在使用七牛 Java SDK 上传图片并自动生成缩略图时,你可以通过配置管道(Pipeline)和图片处理(Image Processing)功能来实现。这里的关键是在上传时指定一个特定的图片处理参数,七牛会在上传后自动处理并生成缩略图。

#### 步骤如下:

1. **配置 Pipeline**:
   - 登录七牛管理控制台,创建一个新的 Pipeline。
   - 在 Pipeline 的配置中,启用图片处理(Image Processing)功能。
   - 记录下这个 Pipeline 的名称。

2. **上传时指定处理参数**:
   - 在上传图片时,使用七牛 SDK 的上传接口,并在上传策略(Put Policy)中指定 `pipeline` 和 `process` 参数。
   - `process` 参数用于指定图片处理操作,比如调整分辨率。

#### 示例代码:

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import com.google.gson.Gson;

import java.io.File;

public class QiniuUploadWithThumbnail {

public static void main(String[] args) {
    // 配置七牛账号的密钥
    String accessKey = "your_access_key";
    String secretKey = "your_secret_key";
    // 要上传的空间名
    String bucket = "your_bucket_name";
    // 上传后生成的访问域名
    String domain = "your_domain";

    // 初始化Auth对象
    Auth auth = Auth.create(accessKey, secretKey);

    // 配置上传策略,包括 Pipeline 名称和图片处理参数
    String pipeline = "your_pipeline_name";
    String process = "imageView2/2/w/200/h/200"; // 生成200x200的缩略图
    String putPolicy = "{\"scope\":\"" + bucket + "\", \"pipeline\":\"" + pipeline + "\", \"process\":\"" + process + "\"}";

    // 初始化配置类
    Configuration cfg = new Configuration(Region.autoRegion());
    //...其他配置,如是否使用https, 域名,超时等

    UploadManager uploadManager = new UploadManager(cfg);

    // 生成上传 Token,可以指定有效时间等
    String upToken = auth.uploadToken(bucket, putPolicy.toBytes(), 3600);

    try {
        File file = new File("path_to_your_image.jpg");
        String key = "picture.jpg";
        Response response = uploadManager.put(file, key, upToken);

        // 解析上传成功的结果
        DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
        System.out.println("key: " + putRet.key);
        System.out.println("hash: " + putRet.hash);

        // 生成缩略图的访问URL
        String thumbnailUrl = domain + "/" + putRet.key + "!200x200";
        System.out.println("Thumbnail URL: " + thumbnailUrl);

    } catch (QiniuException ex) {
        Response r = ex.response;
        System.err.println(r.toString());
        try {
            System.err.println(r.bodyString());
        } catch (QiniuException ex2) {
            // ignore
        }
    }
}

}


#### 注意事项:
- 确保你的 Pipeline 已经正确配置并启用了图片处理功能。
- `process` 参数的值应该根据七牛的图片处理文档来设置,上述示例中的 `imageView2/2/w/200/h/200` 是生成一个 200x200 的缩略图。
- 上传成功后,缩略图的访问路径可以通过在原始图片路径后添加 `!200x200` 来获取,如 `https://domain/picture.jpg!200x200`。

这样,你就可以在上传图片时自动生成缩略图了。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
七牛云问答
子站问答
访问
宣传栏