请问使用七牛java-sdk,上传图片的时候如何自动生成缩略图
例如原始图片访问路径为https://domain/picture.jpg
缩略图路径就是https://domain/picture.jpg!200x200
找了半天文档,只找到了imageviewr的方式,但是我感觉那种不是我想要的,我想要的效果是上传的时候我带上一个特定的参数,例如分辨率,就能自动为我生成缩略图
希望技术人员能指导我一下
请问使用七牛java-sdk,上传图片的时候如何自动生成缩略图
例如原始图片访问路径为https://domain/picture.jpg
缩略图路径就是https://domain/picture.jpg!200x200
找了半天文档,只找到了imageviewr的方式,但是我感觉那种不是我想要的,我想要的效果是上传的时候我带上一个特定的参数,例如分辨率,就能自动为我生成缩略图
希望技术人员能指导我一下
### 回答
在使用七牛 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`。
这样,你就可以在上传图片时自动生成缩略图了。
778 阅读
929 阅读