开发者社区 问答 正文

Docker-二维码生成/识别 API 服务-QR Code API


用 Golang 写的,但二维码识别用了一个没法静态编译的 Zbar 的 C 依赖,所以还带了一个docker 镜像,方便部署。


二维码生成
例子: https://qrcode-api.你的域名.com/encode?content=helloWorld&size=400&type=png


奇怪的(划掉)例子: https://qrcode-api.你的域名.com/encode?content=helloWorld&size=400&type=string


二维码识别
POST 含二维码的图片到: https://qrcode-api.你的域名.com/decode


返回示例:


{
    "ok": true,
    "desc": "",
    "content": [
        "你好"
    ]
}
目前支持 jpeg, png 和 gif.


字符统一按 UTF-8 处理和返回,一般不会有奇怪的乱码(为了这事还hack 了一波 Zbar)。


站比较小,如果需要识别的图片体积太大的还请考虑本地部署。


具体详情请看项目介绍


项目地址: https://github.com/nanmu42/qrcode-api

展开
收起
寒喵 2018-12-31 23:59:31 4937 分享 版权
阿里云 AI 助理回答

要解决您使用Golang编写的包含无法静态编译的Zbar C依赖的二维码识别问题,并通过Docker镜像方便部署的需求,您可以按照以下步骤操作:

  1. 准备Go项目与Dockerfile

    • 确保您的开发环境中已安装Docker。
    • 下载或创建您的Go项目,其中包含对Zbar C库的调用。由于Zbar不能静态编译进Go应用,您需要在Dockerfile中处理这一特殊依赖。
    • 编写Dockerfile,参考如下结构,但需调整以适应包含Zbar的情况。您可能需要在Dockerfile中添加步骤来安装Zbar库及其开发文件,并确保正确的环境变量和编译标志被设置以链接Zbar。
  2. 构建Docker镜像

    • 在包含Dockerfile的项目根目录下,执行命令以构建镜像:
      docker build . -t your-qr-app-image
      
  3. 本地验证

    • 运行构建好的镜像进行本地测试:
      docker run -p 8080:8080/tcp your-qr-app-image
      
    • 使用curl或其他HTTP客户端访问服务端点验证二维码生成功能是否正常工作。
  4. 部署到Serverless应用引擎(SAE)

    • 开通阿里云SAE服务并创建应用。
    • 将构建的镜像推送到阿里云容器镜像服务(ACR),具体操作请参照官方文档。
    • 在SAE控制台配置应用,选择从ACR拉取您推送的镜像,完成部署配置。
  5. 关于二维码生成API

    • 您提到的二维码生成API示例(如https://qrcode-api.你的域名.com/encode?content=helloWorld)表明您需要实现一个Web服务,接收请求并根据提供的内容生成二维码。在Go中,可以使用诸如github.com/skip2/go-qrcode这样的库来生成二维码图像数据,然后通过HTTP响应返回给客户端。
  6. 注意事项

    • 动态链接库:在Docker镜像中处理C库依赖时,确保所选的基础镜像兼容且包含了必要的运行时库。
    • 跨平台兼容性:考虑Docker镜像的跨平台运行能力,特别是当涉及C库时,不同操作系统可能需要不同的配置。
    • 安全性:部署至生产环境前,确保遵循最佳安全实践,比如限制容器权限、使用安全的网络策略等。

通过上述步骤,您可以成功地将包含Zbar C依赖的Go应用通过Docker镜像部署至SAE,同时提供二维码生成服务。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答