java 处理jpeg旋转90°,并输出图片流传到MINIO
时间: 2024-04-08 17:32:13 浏览: 200
rocketmq_oss_minio_7.0.2.rar
要将旋转后的JPEG图像以流的形式传输到MINIO对象存储,可以使用Java的MINIO客户端库。以下是一个示例代码,它将JPEG图像旋转90度并将旋转后的图像流上传到MINIO:
```java
import io.minio.MinioClient;
import io.minio.errors.*;
import io.minio.messages.Item;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.imageio.ImageIO;
public class JpegRotationToMinio {
public static void main(String[] args) {
String endpoint = "http://minio-server:9000"; // MINIO服务器地址
String accessKey = "YOUR_ACCESS_KEY"; // MINIO访问密钥
String secretKey = "YOUR_SECRET_KEY"; // MINIO访问密钥
String bucketName = "your-bucket"; // MINIO存储桶名称
String objectName = "output.jpg"; // MINIO对象名称
try {
// 创建一个MinioClient对象
MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
// 读取输入图像
BufferedImage inputImage = ImageIO.read(new File("input.jpg")); // 输入JPEG图像路径
// 创建一个AffineTransform对象,用于旋转图像
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(-90), inputImage.getWidth() / 2, inputImage.getHeight() / 2);
// 执行旋转操作
AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
BufferedImage outputImage = op.filter(inputImage, null);
// 将旋转后的图像保存到字节数组输出流
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(outputImage, "jpeg", outputStream);
// 将字节数组输出流转换为字节数组
byte[] imageData = outputStream.toByteArray();
// 将字节数组作为输入流上传到MINIO
ByteArrayInputStream inputStream = new ByteArrayInputStream(imageData);
minioClient.putObject(bucketName, objectName, inputStream, imageData.length, "image/jpeg");
System.out.println("图像旋转并上传到MINIO完成!");
} catch (IOException | InvalidKeyException | NoSuchAlgorithmException | InsufficientDataException |
InvalidResponseException | InternalException | ErrorResponseException | RegionConflictException |
XmlParserException | InvalidBucketNameException | InvalidObjectNameException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,需要将`endpoint`、`accessKey`、`secretKey`、`bucketName`和`objectName`替换为你的MINIO配置信息和存储桶、对象的名称。代码将读取输入图像,执行反向旋转90度,并将旋转后的图像以流的形式上传到MINIO中。请确保在运行代码之前已经正确设置了MINIO服务器和相关凭证信息。
阅读全文