我正在玩Amazon Rekognition。我发现一个真正的nice/easy library可以从我的网络摄像头拍摄图像,其工作方式如下:
BufferedImage bufImg = webcam.getImage();
然后,我试图将此
BufferedImage
转换为com.amazonaws.services.rekognition.model.Image
,这必须提交给Rekognition库。这就是我在做什么:byte[] imgBytes = ((DataBufferByte) bufImg.getData().getDataBuffer()).getData();
ByteBuffer byteBuffer = ByteBuffer.wrap(imgBytes);
return new Image().withBytes(byteBuffer);
但是,当我尝试使用
Image
对Rekognition进行一些API调用时,出现异常:com.amazonaws.services.rekognition.model.InvalidImageFormatException: Invalid image encoding (Service: AmazonRekognition; Status Code: 400; Error Code: InvalidImageFormatException; Request ID: X)
Java SDK将自动对字节进行base64编码的docs状态。万一发生奇怪的事情,我尝试在转换之前尝试对字节进行base64编码:
imgBytes = Base64.getEncoder().encode(imgBytes);
但是,也会发生相同的异常。
有任何想法吗? :)
最佳答案
我尝试将图像编码为JPG(Rekognition支持PNG或JPG格式),它解决了问题。
BufferedImage bufImg = webcam.getImage();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bufImg, "jpg", baos);
ByteBuffer byteBuffer = ByteBuffer.wrap(baos.toByteArray());
return new Image().withBytes(byteBuffer);
关于java - 将BufferedImage转换为aws…rekognition.model.Image,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41527687/