aboutsummaryrefslogtreecommitdiff
path: root/src/tools/qr-code-generator/qr-code-generator.vue
diff options
context:
space:
mode:
authorGravatar Corentin Thomasset <corentin.thomasset74@gmail.com> 2022-04-14 18:18:15 +0200
committerGravatar Corentin Thomasset <corentin.thomasset74@gmail.com> 2022-04-14 18:18:15 +0200
commit5582d75927b560d9259929c787c0809634d1f8ae (patch)
treea8dcd4137fbf968ed1ced0aec577cfc40ae0e50d /src/tools/qr-code-generator/qr-code-generator.vue
parent203b6a9d73dcb30182b130de59920534e18b76b4 (diff)
downloadit-tools-5582d75927b560d9259929c787c0809634d1f8ae.tar.gz
it-tools-5582d75927b560d9259929c787c0809634d1f8ae.tar.zst
it-tools-5582d75927b560d9259929c787c0809634d1f8ae.zip
feat(tool): qr-code generator
Diffstat (limited to 'src/tools/qr-code-generator/qr-code-generator.vue')
-rw-r--r--src/tools/qr-code-generator/qr-code-generator.vue60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/tools/qr-code-generator/qr-code-generator.vue b/src/tools/qr-code-generator/qr-code-generator.vue
new file mode 100644
index 0000000..e23f00a
--- /dev/null
+++ b/src/tools/qr-code-generator/qr-code-generator.vue
@@ -0,0 +1,60 @@
+<template>
+ <n-card>
+ <n-grid cols="3" x-gap="12">
+ <n-gi span="2">
+ <n-form label-width="130" label-placement="left">
+ <n-form-item label="Text:">
+ <n-input v-model:value="text" placeholder="Your link or text..." />
+ </n-form-item>
+ <n-form-item label="Foreground color:">
+ <n-color-picker v-model:value="foreground" :modes="['hex']" />
+ </n-form-item>
+ <n-form-item label="Background color:">
+ <n-color-picker v-model:value="background" :modes="['hex']" />
+ </n-form-item>
+ <n-form-item label="Error resistance:">
+ <n-select v-model:value="errorCorrectionLevel"
+ :options="errorCorrectionLevels.map((value) => ({ label: value, value }))" />
+ </n-form-item>
+ </n-form>
+ </n-gi>
+ <n-gi>
+ <n-space justify="center" align="center" vertical>
+ <n-image :src="qrcode" width="200" />
+ <n-button @click="download" secondary>Download qr-code</n-button>
+ </n-space>
+ </n-gi>
+ </n-grid>
+ </n-card>
+</template>
+
+<script setup lang="ts">
+import { useDownloadFileFromBase64 } from '@/composable/downloadBase64';
+import { useQRCode } from './useQRCode'
+import { ref } from 'vue';
+import type { QRCodeErrorCorrectionLevel } from 'qrcode';
+
+
+const foreground = ref('#000000ff')
+const background = ref('#ffffffff')
+const errorCorrectionLevel = ref<QRCodeErrorCorrectionLevel>('medium')
+
+const errorCorrectionLevels = ['low', 'medium', 'quartile', 'high']
+
+const text = ref('https://it-tools.tech')
+const { qrcode } = useQRCode({
+ text,
+ color: {
+ background,
+ foreground
+ },
+ errorCorrectionLevel,
+ options: { width: 1024 }
+})
+
+const { download } = useDownloadFileFromBase64({ source: qrcode, filename: 'qr-code.png' })
+
+</script>
+
+<style lang="less" scoped>
+</style> \ No newline at end of file