我有一个画廊和附件模型。画廊有很多附件,基本上所有附件都是在附件的 ':content' 属性中引用的图像。
图像使用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 })
都有同样的错误。我想知道如何从@attachment 中获取 s3 对象,即使我可以这样做,我如何将它用作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 })
还是没有成功...
有小费吗?