0

我正在玩亞馬遜Rekognition。我發現了一個真正nice/easy library從我的攝像頭,其工作原理是這樣拍攝圖像:將BufferedImage轉換爲aws ... rekognition.model.Image

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); 

然而,當我嘗試做一些API調用與Image到Rekognition,我得到一個異常:

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); 

然而,同樣的異常隨之而來。

任何想法? :)

回答

4

我試圖編碼圖像到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);