AWS Rekognition Image的getBytes返回null,无法转换为Java BufferedImage
解决AWS Rekognition Image getBytes()返回null的问题
嘿,我来帮你搞定这个问题!
你遇到的核心问题是:当你用withS3Object()创建Rekognition的Image对象时,这个对象只是保存了S3的桶名和文件键,并没有实际加载图片的字节数据,所以调用getBytes()自然会返回null——它本来就没存储这个信息呀。
要同时满足Rekognition识别和转换成BufferedImage的需求,你需要先把图片从S3下载到本地字节数组,再用这个字节数组来创建Rekognition的Image对象,同时也能用来生成BufferedImage。
具体步骤和代码示例
从S3下载图片到字节数组
你需要用AWS S3客户端获取文件的输入流,再转换成字节数组。这里提供两种方式:用Apache Commons IO工具类,或者自己实现流转换。用字节数组创建Rekognition Image并转换为BufferedImage
方式1:使用Apache Commons IO简化代码
// 初始化S3客户端(替换成你的区域) AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(Regions.US_EAST_1) .build(); // 从S3获取文件并转成字节数组(用try-with-resources自动关闭流) try (S3Object s3Object = s3Client.getObject(bucket, key); InputStream inputStream = s3Object.getObjectContent()) { byte[] imageBytes = IOUtils.toByteArray(inputStream); // 用字节数组创建Rekognition的Image对象,此时getBytes()会返回有效ByteBuffer Image inputImage = new Image().withBytes(ByteBuffer.wrap(imageBytes)); // 构建DetectFaces请求并调用API DetectFacesRequest request = new DetectFacesRequest() .withImage(inputImage) .withAttributes(Attribute.ALL); // 按需设置识别属性 // 同时把字节数组转换成BufferedImage BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(imageBytes)); // 后续处理逻辑... } catch (IOException e) { e.printStackTrace(); }
方式2:自己实现流转字节数组(无需依赖第三方库)
如果不想引入Apache Commons IO,可以自己写一个转换方法:
// 工具方法:输入流转字节数组 private static byte[] inputStreamToByteArray(InputStream is) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = is.read(buffer)) != -1) { baos.write(buffer, 0, bytesRead); } return baos.toByteArray(); } // 调用示例 try (S3Object s3Object = s3Client.getObject(bucket, key); InputStream inputStream = s3Object.getObjectContent()) { byte[] imageBytes = inputStreamToByteArray(inputStream); // 后续创建Image和BufferedImage的逻辑和上面一致 } catch (IOException e) { e.printStackTrace(); }
关键提示
- 一定要用try-with-resources处理输入流和S3Object,避免资源泄漏。
- 确保你的AWS权限配置正确,S3客户端能正常访问目标桶和文件。
内容的提问来源于stack exchange,提问作者Syed Ali
相关产品推荐
相关产品推荐

