0
私はにpng
イメージファイルを持っています。私はこのイメージをJava SDKを使用して取得しようとしています。これまでのところ、ここで私がやっていることです:S3ObjectInputStreamをBase64のURLに変換するには?
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
方法が期待どおりに動作します。ただし、2番目のメソッドはBase64
であったはずですが、data:image/png;base64,[[email protected]
を返します。
私は間違っていますか?助けてください。
を、あなたの 'encodeBase64URL'方法は間違っています。あなたは '(B @ 428d24fa'が出てくる)' byte [] 'の' toString() 'をやっているようです。 – Kayaman
私は 'encodeBase64URL'メソッドを含んでいました。はい、 'toString()'が 'byte []'にあります。私は何をお勧めしますか? – JadeSync
あなたは私の答えを試しましたか? – Kayaman