Add qr code generator
This commit is contained in:
parent
80b052d654
commit
7241c0e32a
@ -38,6 +38,10 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.base-title {
|
||||||
|
margin-top: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
|
@ -43,6 +43,16 @@
|
|||||||
<img src="/img/base64.png" class="optional-img" alt="Stablediffusion: JSON text on a black background">
|
<img src="/img/base64.png" class="optional-img" alt="Stablediffusion: JSON text on a black background">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="utilities-item">
|
||||||
|
<a href="qrcode.php" class="fill-div">
|
||||||
|
<div style="justify-self: left;">
|
||||||
|
<h3>QRCode Generator</h3>
|
||||||
|
<p>Generate QRCodes for links, WiFi, and more</p>
|
||||||
|
<noscript style="color:red;">This requires javascript</noscript>
|
||||||
|
</div>
|
||||||
|
<img src="/img/base64.png" class="optional-img" alt="Stablediffusion: Cyberpunk neon qrcode">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,6 +35,13 @@
|
|||||||
max-height: 45em;
|
max-height: 45em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 768px){
|
||||||
|
.json-title {
|
||||||
|
margin-top: 3em;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
|
119
src/utilities/qrcode.css
Normal file
119
src/utilities/qrcode.css
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
.qrcode-title {
|
||||||
|
width: 100vw;
|
||||||
|
height: 20vh;
|
||||||
|
|
||||||
|
display: grid;
|
||||||
|
align-content: center;
|
||||||
|
justify-content: center;
|
||||||
|
justify-items: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
margin-top: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qrcode-body {
|
||||||
|
width: 90vw;
|
||||||
|
min-height: 80vh;
|
||||||
|
background: rgba(11,11,12,0.3);
|
||||||
|
margin: 0px 5vw ;
|
||||||
|
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
grid-template-rows: 1fr 1fr 1fr;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-block {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 40% 60%;
|
||||||
|
max-height: 75px;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.results-block {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 40% 60%;
|
||||||
|
justify-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.result-code-wrapper {
|
||||||
|
width: 256px;
|
||||||
|
height: 256px;
|
||||||
|
border-color: white;
|
||||||
|
border-style: dashed;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-option{
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
max-height: 75px;
|
||||||
|
align-items: center;
|
||||||
|
grid-gap: 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-option p {
|
||||||
|
display: inline;
|
||||||
|
vertical-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-option input {
|
||||||
|
float: right;
|
||||||
|
display: inline;
|
||||||
|
vertical-align: center;
|
||||||
|
max-height: 2em;
|
||||||
|
background: rgba(11,11,12,1);
|
||||||
|
border-color: white;
|
||||||
|
border-style: dashed;
|
||||||
|
color: white;
|
||||||
|
font-family: 'Lekton', Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-option select {
|
||||||
|
float: right;
|
||||||
|
display: inline;
|
||||||
|
vertical-align: center;
|
||||||
|
max-height: 2em;
|
||||||
|
background: rgba(11,11,12,1);
|
||||||
|
border-color: white;
|
||||||
|
border-style: dashed;
|
||||||
|
color: white;
|
||||||
|
font-family: 'Lekton', Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input {
|
||||||
|
float: right;
|
||||||
|
display: inline;
|
||||||
|
vertical-align: center;
|
||||||
|
max-height: 2em;
|
||||||
|
background: rgba(11,11,12,1);
|
||||||
|
border-color: white;
|
||||||
|
border-style: dashed;
|
||||||
|
color: white;
|
||||||
|
font-family: 'Lekton', Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 768px){
|
||||||
|
.results-block {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
margin-top: -10vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-block {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qrcode-body {
|
||||||
|
height: 100%;
|
||||||
|
margin-bottom: -50vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qrcode-title {
|
||||||
|
margin-top: 3em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
65
src/utilities/qrcode.js
Normal file
65
src/utilities/qrcode.js
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
function reRender() {
|
||||||
|
let input_url = $('#input').val();
|
||||||
|
let input_size = $('#input_size').val();
|
||||||
|
let input_corr = $('#input_correction').val();
|
||||||
|
let input_radius = $('#input_radius').val();
|
||||||
|
let input_padding = $('#input_padding').val();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//first save to localStorage
|
||||||
|
localStorage.setItem('qrcode_url', input_url);
|
||||||
|
localStorage.setItem('qrcode_size', input_size);
|
||||||
|
localStorage.setItem('qrcode_radius', input_radius);
|
||||||
|
localStorage.setItem('qrcode_padding', input_padding);
|
||||||
|
localStorage.setItem('qrcode_corr', input_corr);
|
||||||
|
|
||||||
|
$('.result-code-wrapper').css('width', input_size);
|
||||||
|
$('.result-code-wrapper').css('height', input_size);
|
||||||
|
|
||||||
|
$('#qrcode-result').empty();
|
||||||
|
|
||||||
|
$('#qrcode-result').qrcode({
|
||||||
|
size: input_size,
|
||||||
|
text: input_url,
|
||||||
|
redner: 'image',
|
||||||
|
ecLevel: input_corr,
|
||||||
|
radius: input_radius,
|
||||||
|
quiet: input_padding,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$(function(ready){
|
||||||
|
$('#input').change(reRender);
|
||||||
|
$('#input_size').change(reRender);
|
||||||
|
$('#input_radius').change(reRender);
|
||||||
|
$('#input_padding').change(reRender);
|
||||||
|
$('#input_correction').change(reRender);
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
let last_url = localStorage.getItem('qrcode_url');
|
||||||
|
if(last_url != null) {
|
||||||
|
$('#input').val(last_url);
|
||||||
|
}
|
||||||
|
let last_size = localStorage.getItem('qrcode_size');
|
||||||
|
if(last_size != null) {
|
||||||
|
$('#input_size').val(last_size);
|
||||||
|
}
|
||||||
|
let last_radius = localStorage.getItem('qrcode_radius');
|
||||||
|
if(last_radius != null) {
|
||||||
|
$('#input_radius').val(last_radius);
|
||||||
|
}
|
||||||
|
let last_correction = localStorage.getItem('qrcode_corr');
|
||||||
|
if(last_correction != null) {
|
||||||
|
$('#input_correction').val(last_correction);
|
||||||
|
}
|
||||||
|
let last_padding = localStorage.getItem('qrcode_padding');
|
||||||
|
if(last_padding != null) {
|
||||||
|
$('#input_padding').val(last_padding);
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#input').change();
|
||||||
|
});
|
61
src/utilities/qrcode.php
Normal file
61
src/utilities/qrcode.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<?php include '../common/include.php' ?>
|
||||||
|
<title>Tyler Perkins - QRCode</title>
|
||||||
|
<link rel="stylesheet" href="./qrcode.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/lrsjng.jquery-qrcode/0.18.0/jquery-qrcode.min.js" integrity="sha512-P9oNnyfvOZrY1H0D5js+UcLZr+vLkX50glCUlpJAd/RL84+KBtGI4yvH5YVM5TejD+jbURwQq3C/7hgYWOo8bQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||||
|
<script src="qrcode.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include '../common/header.php' ?>
|
||||||
|
|
||||||
|
<div class="qrcode-title">
|
||||||
|
<h1>QRCode Generator</h1>
|
||||||
|
<noscript style="color:red;">This requires javascript</noscript>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="qrcode-body">
|
||||||
|
<div class="title-block">
|
||||||
|
<h3 style="display:inline; vertical-align: center;">String to encode</h3>
|
||||||
|
<input type="text" id="input" placeholder="https://www.clortox.com">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="results-block">
|
||||||
|
<div class="result-code-wrapper">
|
||||||
|
<div id="qrcode-result"></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="inline-option">
|
||||||
|
<p>Width</p>
|
||||||
|
<input type="number" id="input_size" value="256" placeholder="256">
|
||||||
|
</div>
|
||||||
|
<div class="inline-option">
|
||||||
|
<p>Radius</p>
|
||||||
|
<input type="number" id="input_radius" value="0.1" placeholder="0.1" min="0" max="1" step="0.05">
|
||||||
|
</div>
|
||||||
|
<div class="inline-option">
|
||||||
|
<p>Padding</p>
|
||||||
|
<input type="number" id="input_padding" value="0" placeholder="0" pattern="\d*">
|
||||||
|
</div>
|
||||||
|
<div class="inline-option">
|
||||||
|
<p>Error Correction Level</p>
|
||||||
|
<select name="Correction" id="input_correction">
|
||||||
|
<option value="L">Low</option>
|
||||||
|
<option value="M">Medium</option>
|
||||||
|
<option value="Q">Quality</option>
|
||||||
|
<option value="H">High</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<?php include '../common/footer.php' ?>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
|
||||||
|
</html>
|
Reference in New Issue
Block a user