howtophil icon

Store Data As Codegroup QRcodes (one image)

howtophil | PRO | 08/28/23 10:09:09 PM UTC (Edited) | 0 ⭐ | 1484 👁️ | Never ⏰ | []
Bash |

1.71 KB

|

None

|

0 👍

/

0 👎

#!/bin/bash
#-----------------------------------------------------------------------------
# With this bash script your can store any data (text or binary) as a long
# image of qrcodes. Thanks to codegroup, the data is converted to ascii
# letter-only groups of 5 characters. It is then split and converted to
# qrcodes, which are then combined into one image.
#
# You could, of course, encrypt the data before storing it as well.
#
# You'll need bash, gzip, parallel, zbar-tools, codegroup, and imagemagick
# sudo apt-get install bash imagemagick gzip parallel zbar-tools codegroup
#
# Put this script in its own working directory/folder!
# Copy the data file to the working folder.
# Do not run this script on your only copy of some data!
#
# Use the script:
# $ ./qrcg.sh "Filename"
#-----------------------------------------------------------------------------
COUNTER=0
IFS=$'\n'
# Begin for ldata loop
for ldata in $( cat $1 |gzip -9 | codegroup | parallel --no-notice -N60 echo)
    do
        let COUNTER+=1
        echo "Working on QRcode $COUNTER"
        PADCOUNT=$(printf "%08d" $COUNTER)
        qrencode -m 8 -o $PADCOUNT.png "$ldata"
        convert $PADCOUNT.png -gravity South -pointsize 15 -annotate +0+0 "$(basename $1) $PADCOUNT" $PADCOUNT.png
    done
# End for ldata loop
#
# Comment out the following two lines if you just want
# a collection of qrcodes in separate pngs
convert *.png -append inline.png
rm 00*.png
#-----------------------------------------------------------------------------
# To restore file from qrcodes:
# $ zbarimg -q --raw -Sdisable -Sqrcode.enable inline.png | sed 's/[0-9]*//g' | tac |codegroup -d |gzip -d > out.file
#-----------------------------------------------------------------------------

Comments