mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 11:05:18 +08:00
新增 车位相机图片上传到OSS服务器
This commit is contained in:
@@ -2,12 +2,15 @@ package com.jsowell.common.util.file;
|
||||
|
||||
import com.aliyun.oss.OSS;
|
||||
import com.aliyun.oss.OSSClientBuilder;
|
||||
import com.aliyun.oss.model.ObjectMetadata;
|
||||
import com.jsowell.common.config.AliyunOssConfig;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
|
||||
@@ -62,4 +65,37 @@ public class AliyunOssUploadUtils {
|
||||
}
|
||||
return aliyunOssConfig.getUrl() + "/" + filePathName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传到阿里云(车位相机用)
|
||||
* @param compressedImageBytes
|
||||
* @param fileName 文件名 (车位号 + 时间戳).jpg
|
||||
* @return
|
||||
*/
|
||||
public static String upload2OSS(byte[] compressedImageBytes, String fileName) {
|
||||
// 生成 OSSClient
|
||||
OSS ossClient = new OSSClientBuilder().build(aliyunOssConfig.getEndpoint(), aliyunOssConfig.getAccessKeyId(), aliyunOssConfig.getAccessKeySecret());
|
||||
|
||||
// 创建对象元数据,默认是可读的
|
||||
ObjectMetadata metadata = new ObjectMetadata();
|
||||
metadata.setContentLength(compressedImageBytes.length); // 设置内容长度
|
||||
|
||||
// 创建输入流
|
||||
InputStream inputStream = new ByteArrayInputStream(compressedImageBytes);
|
||||
|
||||
//获取当前时间
|
||||
LocalDateTime currentDate = LocalDateTime.now();
|
||||
String dir_name = currentDate.getYear() + "/" + currentDate.getMonthValue() + "/" + currentDate.getDayOfMonth() + "/";
|
||||
|
||||
// 随机数
|
||||
String randomNumber = Long.toHexString(currentDate.toEpochSecond(ZoneOffset.UTC)) + "-";
|
||||
|
||||
// 文件路径名称
|
||||
String filePathName = aliyunOssConfig.getFilehost() + "/" + dir_name + randomNumber + fileName;
|
||||
ossClient.putObject(aliyunOssConfig.getBucketName(), filePathName, inputStream, metadata);
|
||||
|
||||
// 关闭 OSS 客户端
|
||||
ossClient.shutdown();
|
||||
return aliyunOssConfig.getUrl() + "/" + filePathName;
|
||||
}
|
||||
}
|
||||
@@ -7,9 +7,12 @@ import org.apache.poi.util.IOUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
import javax.imageio.IIOImage;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.imageio.ImageWriteParam;
|
||||
import javax.imageio.ImageWriter;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.Arrays;
|
||||
@@ -76,4 +79,39 @@ public class ImageUtils {
|
||||
IOUtils.closeQuietly(in);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 图像压缩方法
|
||||
* @param originalImage 源图像
|
||||
* @param quality 压缩质量
|
||||
* @return
|
||||
*/
|
||||
public static BufferedImage compressImage(BufferedImage originalImage, double quality) {
|
||||
BufferedImage compressedImage = null;
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
|
||||
try {
|
||||
// 设置压缩参数
|
||||
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
|
||||
ImageWriteParam param = writer.getDefaultWriteParam();
|
||||
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
|
||||
param.setCompressionQuality((float) quality);
|
||||
|
||||
// 压缩图像
|
||||
writer.setOutput(ImageIO.createImageOutputStream(outputStream));
|
||||
writer.write(null, new IIOImage(originalImage, null, null), param);
|
||||
|
||||
// 读取压缩后的图像
|
||||
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
|
||||
compressedImage = ImageIO.read(inputStream);
|
||||
|
||||
// 关闭流
|
||||
outputStream.close();
|
||||
inputStream.close();
|
||||
writer.dispose();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return compressedImage;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user