Rails API创建二维码并将图像存储在active_storage中



我正在使用Rails6neneneba API,在那里我需要生成QR码图像,并使用active_storage将该图像保存到S3。

我使用rqrcode gem,它给了我SVG字符串。如何将SVG字符串转换为图像,并使用active_storage将该图像存储到S3?

以下是我的代码

控制器

qrcode = RQRCode::QRCode.new("#{@order.id}")
svg = qrcode.as_svg(
offset: 0,
color: '000',
shape_rendering: 'crispEdges',
module_size: 6,
standalone: true
)

我还应该使用生成png图像

png = qrcode.as_png(
bit_depth: 1,
border_modules: 4,
color_mode: ChunkyPNG::COLOR_GRAYSCALE,
color: 'black',
file: nil,
fill: 'white',
module_px_size: 6,
resize_exactly_to: false,
resize_gte_to: false,
size: 120
)

但在存储时,我得到了以下错误

ArgumentError (Could not find or build blob: expected attachable, got <ChunkyPNG::Image 120x120 [

正在寻找从svg字符串或png文件生成图像的方法。

谢谢。

注意:前端是react原生

我按照这里的答案实现了这一点。

简而言之,生成png后,您可以将其附加到您的模型上,如下所示:@model.qr_code.attach(io: StringIO.new(png.to_s), filename: "filename.png")

相关内容

  • 没有找到相关文章

最新更新