第一种:阿里云对象存储oss服务提供java的SDK方式。
首先开通阿里云的对象存储oss服务(本地调用存储不收费,通过公网调用会产生费用,但是很低);
进入服务管理页面后,创建Bucket,
根据需求是否开通相关服务:
创建好Bucket,进入控制台,可以在这里管理相关文件:
可通过首页打开帮助文档:
文档中提供对图片处理的Java SDK,也有其他语言。也提供上传下载的SDK。
如图片缩放的一些参数值:
提供的SDK参考代码:
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 图片缩放。
String style = "image/resize,m_fixed,w_100,h_100";
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-resize.jpg"));
// 图片裁剪。
style = "image/crop,w_100,h_100,x_100,y_100,r_1";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-crop.jpg"));
// 图片旋转。
style = "image/rotate,90";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-rotate.jpg"));
// 图片锐化。
style = "image/sharpen,100";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-sharpen.jpg"));
// 添加水印。
style = "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-watermark.jpg"));
// 图片格式转换。
style = "image/format,png";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-format.png"));
// 获取图片信息。
style = "image/info";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-info.txt"));
// 关闭OSSClient。
ossClient.shutdown();
写的一个demo仅供参考:
package com.vevor.research.imageService.service;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.utils.BinaryUtil;
import com.aliyun.oss.common.utils.IOUtils;
import com.aliyun.oss.internal.OSSHeaders;
import com.aliyun.oss.model.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.Formatter;
import java.util.List;
/**
* @author :lixinyu
* @version :M1.0
* @program :vevor-research
* @date :Created in 2020/9/10 9:50
* @description :oss存储,处理图片服务类
*/
@Slf4j
@Service
public class OssServiceImpl {
/**
*Endpoint以成都为例,其它Region请按实际情况填写。
*/
@Value("${aliyun.oss.endpoint}")
private String endpoint;
/**
* 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
*/
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
/**
* 个人账户bucket,用户技术调研及测试
*/
@Value("${aliyun.oss.bucketName}")
private String bucketName;
/**
* 本地测试上传及下载路径
*/
private final String filePath = "D:\\picture\\";
/**
* 本地图片上传至oss
*/
public void uploadLocalToOss() {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 创建PutObjectRequest对象。key为bucket里所要存储的文件名,可以指定文件夹
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, "vevor/black.png", new File(filePath+"black.png"));
// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
ObjectMetadata metadata = new ObjectMetadata();
// 设置http头
metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// 设置文件读写权限权限,默认继承bucket权限
metadata.setObjectAcl(CannedAccessControlList.PublicRead);
putObje