Criar QRCodes em Kotlin (e Java) é mais difícil do que deveria ser. A QRCode-Kotlin tenta trazer uma forma personalizável, simples e direta de se criar QRCodes, especialmente no backend.
É com esta missão em mente que continuamos a fazer o nosso melhor para aprender como pessoas desenvolvedoras utilizam essa biblioteca nos seus projetos e quais os seus objetivos, para podermos prover uma ferramenta/API melhor para todos. Por favor, sinta-se livre para compartilhar se e como você utiliza este projeto ^^
~115KB
e faz o que promete no rótulo.A biblioteca está disponível através da Maven Central e do NPM JS, portanto basta adicioná-la a seu projeto como qualquer outra:
Gradle:
// Use esse tanto para Android quanto para a JVM
implementation("io.github.g0dkar:qrcode-kotlin:4.1.1")
Maven - JVM:
<dependency>
<groupId>io.github.g0dkar</groupId>
<artifactId>qrcode-kotlin-jvm</artifactId>
<version>4.1.1</version>
</dependency>
Maven - Android:
<dependency>
<groupId>io.github.g0dkar</groupId>
<artifactId>qrcode-kotlin-android</artifactId>
<version>4.1.1</version>
</dependency>
NodeJS:
npm install qrcode-kotlin@4.1.1
Browser:
<script src="https://cdn.jsdelivr.net/gh/g0dkar/qrcode-kotlin@main/release/qrcode-kotlin.min.js" type="application/javascript"></script>
Para criar QRCodes, a principal classe que deve ser usada é a qrcode.render.QRCode
. Ela tem métodos estáticos para
ajudar na criação de um QRCode da forma que você quiser:
// Use qualquer um desses:
val quadrados = QRCode.ofSquares()
val circulos = QRCode.ofCircles()
val quadradosArredondados = QRCode.ofRoundedSquares()
Com isso, você terá uma instância de QRCodeBuilder. Esta classe tem métodos para ajustar cores, tamanho, espaçamento, adicionar um logo e mais! Certifique-se de ver também a classe Colors.
Aqui tem um código para ajudar você a começar:
val helloWorld = QRCode.ofSquares()
.withColor(Colors.DEEP_SKY_BLUE) // Padrão é Colors.BLACK
.withSize(10) // Padrão é 25px
.build("Hello world!")
// Por padrão, os QRCodes serão gerados como PNG
val pngBytes = helloWorld.render()
FileOutputStream("hello-world.png").use { it.write(pngBytes) }
Recomendamos fortemente que você veja os exemplos disponíveis:
Os exemplos mostram praticamente tudo que pode ser feito com a biblioteca! Até mesmo como estender a mesma para criar QRCodes em SVG ;)
Você pode utilizar todas essas funcionalidades juntas e misturadas. Tente gerar o logo e banner com gradientes e tudo mais em SVG ;)
Como dito anteriormente, uma das razões principais para o desenvolvimento dessa biblioteca foi para ser usada em aplicações backend. Portanto, é natural mostrar como fazer exatamente isso :)
Este método de um controller do Spring Framework/Boot mostra como gerar QRCodes dado o conteúdo do mesmo:
import org.springframework.core.io.ByteArrayResource
import org.springframework.http.HttpHeaders.CONTENT_DISPOSITION
import org.springframework.http.MediaType.IMAGE_PNG_VALUE
@GetMapping("/qrcode")
fun generateQrCode(content: String): ResponseEntity<ByteArrayResource> {
val pngData = QRCode().ofSquares()
.build(content)
.render()
val resource = ByteArrayResource(pngData, IMAGE_PNG_VALUE)
return ResponseEntity.ok()
.header(CONTENT_DISPOSITION, "attachment; filename=\"qrcode.png\"")
.body(resource)
}
As principais mudanças vindo da versão v3.3.0
são:
io.github.g0dkar.qrcode
para simplesmente qrcode
QRCode
foi reescrita para ser mais fácil de se criar QRCodes mais bonitos. A antiga classe QRCode
foi renomeada para QRCodeProcessor, com pouquíssimas mudanças na API.
QRCode
é compatível com a antiga!v4.0.7
, uma implementação experimental inicial da classe QRCodeGraphics
foi criada para que o iOS e tvOS sejam suportados. Todo e
qualquer feedback é muito bem-vindo! (pode comentar em
português mesmo) - Um imenso agradecimento a ruicanas por suas contribuições a essa
feature :DCopyright desde 2021 Rafael M. Lins, Licenciado sob a Licença MIT.
QR Code é marca registrada de Denso Wave, Inc.
Se você gostou da biblioteca e quiser ajudar pagando um cafézinho, use os botões abaixo