跳转到主要内容

标签(标签)

资源精选(342) Go开发(108) Go语言(103) Go(99) angular(82) LLM(75) 大语言模型(63) 人工智能(53) 前端开发(50) LangChain(43) golang(43) 机器学习(39) Go工程师(38) Go程序员(38) Go开发者(36) React(33) Go基础(29) Python(24) Vue(22) Web开发(20) Web技术(19) 精选资源(19) 深度学习(19) Java(18) ChatGTP(17) Cookie(16) android(16) 前端框架(13) JavaScript(13) Next.js(12) 安卓(11) typescript(10) 资料精选(10) NLP(10) 第三方Cookie(9) Redwoodjs(9) LLMOps(9) Go语言中级开发(9) 自然语言处理(9) 聊天机器人(9) PostgreSQL(9) 区块链(9) mlops(9) 安全(9) 全栈开发(8) ChatGPT(8) OpenAI(8) Linux(8) AI(8) GraphQL(8) iOS(8) 软件架构(7) Go语言高级开发(7) AWS(7) C++(7) 数据科学(7) whisper(6) Prisma(6) 隐私保护(6) RAG(6) JSON(6) DevOps(6) 数据可视化(6) wasm(6) 计算机视觉(6) 算法(6) Rust(6) 微服务(6) 隐私沙盒(5) FedCM(5) 语音识别(5) Angular开发(5) 快速应用开发(5) 提示工程(5) Agent(5) LLaMA(5) 低代码开发(5) Go测试(5) gorm(5) REST API(5) 推荐系统(5) WebAssembly(5) GameDev(5) CMS(5) CSS(5) machine-learning(5) 机器人(5) 游戏开发(5) Blockchain(5) Web安全(5) Kotlin(5) 低代码平台(5) 机器学习资源(5) Go资源(5) Nodejs(5) PHP(5) Swift(5) 智能体(4) devin(4) Blitz(4) javascript框架(4) Redwood(4) GDPR(4) 生成式人工智能(4) Angular16(4) Alpaca(4) SAML(4) JWT(4) JSON处理(4) Go并发(4) kafka(4) 移动开发(4) 移动应用(4) security(4) 隐私(4) spring-boot(4) 物联网(4) nextjs(4) 网络安全(4) API(4) Ruby(4) 信息安全(4) flutter(4) 专家智能体(3) Chrome(3) CHIPS(3) 3PC(3) SSE(3) 人工智能软件工程师(3) LLM Agent(3) Remix(3) Ubuntu(3) GPT4All(3) 软件开发(3) 问答系统(3) 开发工具(3) 最佳实践(3) RxJS(3) SSR(3) Node.js(3) Dolly(3) 移动应用开发(3) 编程语言(3) 低代码(3) IAM(3) Web框架(3) CORS(3) 基准测试(3) Go语言数据库开发(3) Oauth2(3) 并发(3) 主题(3) Theme(3) earth(3) nginx(3) 软件工程(3) azure(3) keycloak(3) 生产力工具(3) gpt3(3) 工作流(3) C(3) jupyter(3) 认证(3) prometheus(3) GAN(3) Spring(3) 逆向工程(3) 应用安全(3) Docker(3) Django(3) R(3) .NET(3) 大数据(3) Hacking(3) 渗透测试(3) C++资源(3) Mac(3) 微信小程序(3) Python资源(3) JHipster(3) 大型语言模型(2) 语言模型(2) 可穿戴设备(2) JDK(2) SQL(2) Apache(2) Hashicorp Vault(2) Spring Cloud Vault(2) Go语言Web开发(2) Go测试工程师(2) WebSocket(2) 容器化(2) AES(2) 加密(2) 输入验证(2) ORM(2) Fiber(2) Postgres(2) Gorilla Mux(2) Go数据库开发(2) 模块(2) 泛型(2) 指针(2) HTTP(2) PostgreSQL开发(2) Vault(2) K8s(2) Spring boot(2) R语言(2) 深度学习资源(2) 半监督学习(2) semi-supervised-learning(2) architecture(2) 普罗米修斯(2) 嵌入模型(2) productivity(2) 编码(2) Qt(2) 前端(2) Rust语言(2) NeRF(2) 神经辐射场(2) 元宇宙(2) CPP(2) 数据分析(2) spark(2) 流处理(2) Ionic(2) 人体姿势估计(2) human-pose-estimation(2) 视频处理(2) deep-learning(2) kotlin语言(2) kotlin开发(2) burp(2) Chatbot(2) npm(2) quantum(2) OCR(2) 游戏(2) game(2) 内容管理系统(2) MySQL(2) python-books(2) pentest(2) opengl(2) IDE(2) 漏洞赏金(2) Web(2) 知识图谱(2) PyTorch(2) 数据库(2) reverse-engineering(2) 数据工程(2) swift开发(2) rest(2) robotics(2) ios-animation(2) 知识蒸馏(2) 安卓开发(2) nestjs(2) solidity(2) 爬虫(2) 面试(2) 容器(2) C++精选(2) 人工智能资源(2) Machine Learning(2) 备忘单(2) 编程书籍(2) angular资源(2) 速查表(2) cheatsheets(2) SecOps(2) mlops资源(2) R资源(2) DDD(2) 架构设计模式(2) 量化(2) Hacking资源(2) 强化学习(2) flask(2) 设计(2) 性能(2) Sysadmin(2) 系统管理员(2) Java资源(2) 机器学习精选(2) android资源(2) android-UI(2) Mac资源(2) iOS资源(2) Vue资源(2) flutter资源(2) JavaScript精选(2) JavaScript资源(2) Rust开发(2) deeplearning(2) RAD(2)

Awesome QR code - 一个很棒的 Android 二维码生成器。

Showcase

No LogoWith LogoAnimated GIF

已移除图像。已移除图像。已移除图像。

Listing only several styles for demonstration.

Find out more styles and options in the Awesome QR app!

Installation

To add the dependency into your project, edit your project-level build.gradle first.

allprojects { repositories { ... maven { url 'https://jitpack.io' } } }

Then, edit your build.gradle on module level.

Remember to replace <LATEST_VERSION_NAME> with the latest version name showed on the JitPack badge.

dependencies { implementation 'com.github.SumiMakito:AwesomeQRCode:<LATEST_VERSION_NAME>' }

Usage

1. Say hello to RenderOption.

Like a recipe, RenderOption stores a set of options and it will tell the renderer "how to stylize the QR code for you."

// Kotlin val renderOption = RenderOption() renderOption.content = "Special, thus awesome." // content to encode renderOption.size = 800 // size of the final QR code image renderOption.borderWidth = 20 // width of the empty space around the QR code renderOption.ecl = ErrorCorrectionLevel.M // (optional) specify an error correction level renderOption.patternScale = 0.35f // (optional) specify a scale for patterns renderOption.roundedPatterns = true // (optional) if true, blocks will be drawn as dots instead renderOption.clearBorder = true // if set to true, the background will NOT be drawn on the border area renderOption.color = color // set a color palette for the QR code renderOption.background = background // set a background, keep reading to find more about it renderOption.logo = logo // set a logo, keep reading to find more about it

// Java RenderOption renderOption = new RenderOption(); renderOption.setContent("Special, thus awesome."); // content to encode renderOption.setSize(800); // size of the final QR code image renderOption.setBorderWidth(20); // width of the empty space around the QR code renderOption.setEcl(ErrorCorrectionLevel.M); // (optional) specify an error correction level renderOption.setPatternScale(0.35f); // (optional) specify a scale for patterns renderOption.setRoundedPatterns(true); // (optional) if true, blocks will be drawn as dots instead renderOption.setClearBorder(true); // if set to true, the background will NOT be drawn on the border area renderOption.setColor(color); // set a color palette for the QR code renderOption.setBackground(background); // set a background, keep reading to find more about it renderOption.setLogo(logo); // set a logo, keep reading to find more about it

But, wait. What is a background? Don't worry and keep reading. :)

2. Grab a background.Optional

Awesome QR code natively provides three types of backgrounds. Each background should extend the abstract Background class.

// Kotlin // A still background (a still image as the background) val background = StillBackground() background.bitmap = backgroundBitmap // assign a bitmap as the background background.clippingRect = Rect(0, 0, 200, 200) // crop the background before applying background.alpha = 0.7f // alpha of the background to be drawn // A blend background (to draw a QR code onto an area of a still image) val background = BlendBackground() background.bitmap = backgroundBitmap background.clippingRect = Rect(0, 0, 200, 200) background.alpha = 0.7f background.borderRadius = 10 // radius for blending corners // A gif background (animated) val background = GifBackground() background.inputFile = gifFile // assign a file object of a gif image to this field background.outputFile = File(pictureStorage, "output.gif") // IMPORTANT: the output image will be saved to this file object background.clippingRect = Rect(0, 0, 200, 200) background.alpha = 0.7f

// Java // A still background (a still image as the background) StillBackground background = new StillBackground(); background.setBitmap(backgroundBitmap); // assign a bitmap as the background background.setClippingRect(new Rect(0, 0, 200, 200));// crop the background before background.setAlpha(0.7f); // alpha of the background to be drawn // A blend background (to draw a QR code onto an area of a still image) BlendBackground background = new BlendBackground(); background.setBitmap(backgroundBitmap); background.setClippingRect(new Rect(0, 0, 200, 200)); background.setAlpha(0.7f); background.setBorderRadius(10); // radius for blending corners // A gif background (animated) GifBackground background = new GifBackground(); background.setInputFile(gifFile); // assign a file object of a gif image to this field background.setOutputFile(new File(pictureStorage, "output.gif")); // IMPORTANT: the output image will be saved to this file object background.setClippingRect(new Rect(0, 0, 200, 200)); background.setAlpha(0.7f);

3. Seek for a rainbow.Optional

This step is optional since Awesome QR code will use black and white as the default color set.

// Kotlin val color = Color() color.light = 0xFFFFFFFF.toInt() // for blank spaces color.dark = 0xFFFF8C8C.toInt() // for non-blank spaces color.background = 0xFFFFFFFF.toInt() // for the background (will be overriden by background images, if set) color.auto = false // set to true to automatically pick out colors from the background image (will only work if background image is present)

// Java Color color = new Color(); color.setLight(0xFFFFFFFF); // for blank spaces color.setDark(0xFFFF8C8C); // for non-blank spaces color.setBackground(0xFFFFFFFF); // for the background (will be overriden by background images, if set) color.setAuto(false); // set to true to automatically pick out colors from the background image (will only work if background image is present)

4. Hey. I want a Logo.Optional

This step is optional since the logo is not required by default.

// Kotlin val logo = Logo() logo.bitmap = logoBitmap logo.borderRadius = 10 // radius for logo's corners logo.borderWidth = 10 // width of the border to be added around the logo logo.scale = 0.3f // scale for the logo in the QR code logo.clippingRect = Rect(0, 0, 200, 200) // crop the logo image before applying it to the QR code

// Java Logo logo = new Logo(); logo.setBitmap(logoBitmap); logo.setBorderRadius(10); // radius for logo's corners logo.setBorderWidth(10); // width of the border to be added around the logo logo.setScale(0.3f); // scale for the logo in the QR code logo.setClippingRect(new Rect(0, 0, 200, 200)); // crop the logo image before applying it to the QR code

5. Render!

Meet the magical renderer.

If you prefer the asynchronous way...

// Kotlin val result = AwesomeQrRenderer.renderAsync(renderOption, { result -> if (result.bitmap != null) { // play with the bitmap } else if (result.type == RenderResult.OutputType.GIF) { // If your Background is a GifBackground, the image // will be saved to the output file set in GifBackground // instead of being returned here. As a result, the // result.bitmap will be null. } else { // Oops, something gone wrong. } }, { exception -> exception.printStackTrace() // Oops, something gone wrong. })

Or synchronously...

// Kotlin try { val result = AwesomeQrRenderer.render(renderOption) if (result.bitmap != null) { // play with the bitmap } else if (result.type == RenderResult.OutputType.GIF) { // If your Background is a GifBackground, the image // will be saved to the output file set in GifBackground // instead of being returned here. As a result, the // result.bitmap will be null. } else { // Oops, something gone wrong. } } catch (e: Exception) { e.printStackTrace() // Oops, something gone wrong. }

Changelog

Version 1.2.0

  • Translated into Kotlin.
  • Changed to the RenderOption-Renderer structure.

Version 1.1.1

  • Fixed a bug that would previously cause the gaps between blocks in position/alignment patterns.

Version 1.1.0

  • Added the support for GIF backgrounds.
  • Fixed some issues found in the previous version.

Version 1.0.6

  • Fixed a "divide by zero" error mentioned in #20.

Version 1.0.5

  • The way to use Awesome QR code is more elegant.

Version 1.0.4

  • New feature: Embedding a logo image in the QR code.
  • Sample/Demo application updated.

Version 1.0.3

  • Added CHARACTER_SET => UTF-8 to QR code's hints before encoding.
  • Fixed an encoding issue mentioned in #7.

Version 1.0.2

  • Added an optional parameter which enables the data dots to appear as filled circles.

Version 1.0.1

  • Now background images can be binarized as you like.

Version 1.0.0

  • Initial release.

Alternatives

Awesome-qr.js written in JavaScript

Redirect to Awesome-qr.js

EFQRCode written in Swift

EFQRCode is a tool to generate QRCode image or recognize QRCode from image, in Swift.

Awesome QR code is inspired by EFQRCode by EyreFree.

If your application is in need of generating pretty QR codes in Swift, take a look at EFQRCode. It should help.

Donation

If you think Awesome QR code is awesome, would you like to buy me a cup of cappuccino?

Sponsors

It is those generous sponsors who supports this project makes the Awesome-qr.js more awesome!

I'd like to express my sincere appreciation to all the generous sponsors.

Special thanks

Copyright & License

已移除图像。

Awesome QR code is available under the Apache-2.0 license. See the LICENSE file for more info.

Copyright © 2017-2018 Makito.

Exclusive Distributor Agreement

By including, importing, modifying, redistributing, or using this library, you acknowledge and agree that you have read and accept the terms of this Exclusive Distributor Agreement.

WHILE REDISTRIBUTING THIS LIBRARY, THIS AGREEMENT SHALL ALSO BE ATTACHED WITH THE APACHE-2.0 LICENSE.

You're FREE to:

  • Use Awesome QR code in your projects (commercial projects are okay as well).
  • Modify the code according to your needs.
  • Redistribute the modified code under the Exclusive Distributor Agreement and the Apache-2.0 license.

You're FORBIDDEN to:

  • Make Awesome QR code the main or the only feature of your applications.
  • Treat the whole or part of Awesome QR code as a paid function.
  • Make a demo or sample application for Awesome QR code and submit the application to the store (IBNLT Google Play Store, etc.).

原文:https://github.com/SumiMakito/AwesomeQRCode

标签