我有一個Gallery和Attachment模型。一個gallery has_many附件,基本上所有附件都是Attachment的':content'屬性中引用的圖片。當通過Carrierwave上傳時,獲取AWS S3對象以用於Rekognition
使用Carrierwave gem上傳圖像並通過fog-aws gem存儲在Aws S3中。這工作正常。但是,我想用Amazon Rekognition對上傳的圖像進行圖像識別。
我已經安裝了aws-sdk gem,我可以在沒有問題的情況下實例化Rekognition,直到我調用detect_labels
方法,此時我無法使用附加的圖像作爲此方法的參數。
這麼胖我已經試過:
@attachement = Attachment.first
client = Aws::Rekognition::Client.new
resp = client.detect_labels(
image: @attachment
)
# I GET expected params[:image] to be a hash... and got class 'Attachment' instead
我已經嘗試使用:
client.detect_labels(image: { @attachment })
client.detect_labels(image: { @attachment.content.url })
client.detect_labels(image: { @attachment.content })
都具有相同的錯誤。我想知道我怎樣才能獲取s3對象形式@attachment,即使我可以這樣做,我怎樣才能在detect_labels
中使用它作爲參數。
我也試過直接獲取的S3對象來嘗試這最後一點:
s3 = AWS:S3:Client.new
s3_object = s3.list_objects(bucket: 'my-bucket-name').contents[0]
# and then
client.detect_labels(image: { s3_object })
仍然沒有成功...
任何提示嗎?