gpt4 book ai didi

java - 如何将S3ObjectInputStream转换为Base64 url​​?

转载 作者:行者123 更新时间:2023-12-02 03:38:16 26 4
gpt4 key购买 nike

我在 AWS S3 存储桶 中有一个 png 图像文件。我正在尝试使用 Java SDK 获取此图像。到目前为止,这是我所做的:

public String encodeBase64URL(BufferedImage imgBuf) throws IOException {
String base64;

if (imgBuf == null) {
base64 = null;
} else {
Base64 encoder = new Base64();
ByteArrayOutputStream out = new ByteArrayOutputStream();

ImageIO.write(imgBuf, "PNG", out);

byte[] bytes = out.toByteArray();
base64 = "data:image/png;base64," + encoder.encode(bytes)
.toString();
}

return base64;
}

public String saveImageToS3(BufferedImage imgBuf, String id) throws IOException {
AmazonS3 s3 = new AmazonS3Client();

File file = File.createTempFile(id, ".png");
file.deleteOnExit();

ImageIO.write(imgBuf, "png", file);

s3.putObject(new PutObjectRequest(bucketName, id, file));
file.delete();

return bucketName;
}

public String downloadImageFromS3(String id) throws IOException {
AmazonS3 s3 = new AmazonS3Client();

S3Object obj = s3.getObject(new GetObjectRequest(bucketName, id));
BufferedImage imgBuf = ImageIO.read(obj.getObjectContent());

String base64 = encodeBase64URL(imgBuf);
return base64;
}

saveImageToS3 方法完全按照预期工作。但是,第二个方法返回 data:image/png;base64,[B@428d24fa,而它应该是有效的 Base64

我做错了什么?请帮忙。

最佳答案

不要对生成的 byte[] 调用 toString() 这会导致非常无用的 [B@428d24fa 格式,您需要创建一个新的String使用返回的字节:

base64 = "data:image/png;base64,"+ new String(encoder.encode(bytes), "UTF-8");

关于java - 如何将S3ObjectInputStream转换为Base64 url​​?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37163765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com