mic*_*zer 1 java bufferedimage amazon-web-services amazon-rekognition
我正在玩亚马逊Rekognition.我找到了一个非常好/容易的库来从我的网络摄像头拍摄图像,其工作方式如下:
BufferedImage bufImg = webcam.getImage();
Run Code Online (Sandbox Code Playgroud)
我正在尝试将其转换BufferedImage为a com.amazonaws.services.rekognition.model.Image,这是必须提交给Rekognition库的内容.这就是我正在做的事情:
byte[] imgBytes = ((DataBufferByte) bufImg.getData().getDataBuffer()).getData();
ByteBuffer byteBuffer = ByteBuffer.wrap(imgBytes);
return new Image().withBytes(byteBuffer);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试用Rekognition做一些API调用时Image,我得到一个例外:
com.amazonaws.services.rekognition.model.InvalidImageFormatException: Invalid image encoding (Service: AmazonRekognition; Status Code: 400; Error Code: InvalidImageFormatException; Request ID: X)
Run Code Online (Sandbox Code Playgroud)
该文档指出了Java SDK会自动使用Base64编码的字节数.万一发生了一些奇怪的事情,我在转换前尝试了base64编码字节:
imgBytes = Base64.getEncoder().encode(imgBytes);
Run Code Online (Sandbox Code Playgroud)
但是,同样的例外随之而来.
有任何想法吗?:)
我尝试将图像编码为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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |