簡體   English   中英

將BufferedImage轉換為aws…rekognition.model.Image

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM