[英]Convert BufferedImage to aws…rekognition.model.Image
我正在玩Amazon Rekognition。 我找到了一个非常不错/很容易的库 ,可以从我的网络摄像头拍摄图像,其工作方式如下:
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)
docs声明Java SDK将自动对字节进行base64编码。 万一发生奇怪的事情,我尝试在转换之前尝试对字节进行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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.