#!/bin/bash #------------------------------------------------------------ # To encrypt and store a file as a lossless PNG # # $ cat fileto.store | ./tocolor.sh imagefilename.png columnsize # # You will be prompted for your encryption key/passphrase # # You can pipe pretty much anything into it # so output from tar, echo, etc will all work too. #------------------------------------------------------------ #----------------------------------------- # Initialize some counters #----------------------------------------- counter=0 rowcounter=0 colorcounter=0 #----------------------------------------- # Initialize color arrays # and cache some math to make things # run faster. #----------------------------------------- declare -A colorarray declare -A fabcolors alphaarray=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) # Blues and purples theme precolorarray=(000080 00008B 0000CD 0000FF 191970 1E90FF 4169E1 483D8B 4B0081 4B0182 6A5ACD 7B68EE 800080 8A2BE1 8A2CE2 8B008B 9370DB 9400D3 9932CC BA55D3 D8BFD8 DA70D6 DDA0DD E6E6FA EE82EE FF11FF FF00FF) # Or dark greys to look black instead # precolorarray=(000001 000002 000003 000004 000005 000006 000007 000008 000009 000010 000011 000012 000013 000014 000015 000016 000017 000018 000019 000020 000021 000022 000023 000024 000025 000026) for oneletter in "${alphaarray[@]}" do # Fill the colorarray colorarray["$oneletter"]="${precolorarray[$colorcounter]}" let colorcounter+=1 # Fill the fabcolors array hexinput=${colorarray[$oneletter]} a=`echo $hexinput | cut -c-2` b=`echo $hexinput | cut -c3-4` c=`echo $hexinput | cut -c5-6` r=`echo "ibase=16; $a" | bc` g=`echo "ibase=16; $b" | bc` b=`echo "ibase=16; $c" | bc` fabcolors[$oneletter]="( $r, $g, $b) #$hexinput srgb($r,$g,$b)\n" done #----------------------------------------- # How wide did we set the image? # or just default to 500 pixels wide #----------------------------------------- if [ ! -n "$2" ]; then echo "Setting Column Size to 500" columnsize=500 else echo "Setting Column Size to $2" columnsize=$2 fi collimit=$(($columnsize-1)) #----------------------------------------- # start encrypting, encoding, and # building the PNG. #----------------------------------------- ccrypt -e | codegroup | tr '\n' ' '| ( # while loop while IFS= read -r -n1 theletter do if [ $counter -gt $collimit ]; then counter=0 let rowcounter+=1 fi if [[ $theletter = *[!\ ]* ]]; then echo -e -n "$counter,$rowcounter: ${fabcolors[$theletter]}" let counter+=1 fi done let rowcounter+=1 echo " ImageMagick pixel enumeration: $columnsize,$rowcounter,255,srgb" ) |sed '1h;1d;$!H;$!d;G' | convert -monitor txt: "$1"