How the size of a packed file will change if you will pack it again? How will it change if you do that again and again? Will it be the same, bigger of smaller? I checked this with popular kinds of files and below I will show the results. I used Bash script and R language to check this. Charts shows how the file size changes in each iteration, first bar is the size of original, unpacked file.
How the script is used:
bash-3.2$ ./packer.sh cleaning_silver_jewelery.JPG 20 > cleaning_silver_jewelery.JPG.log bash-3.2$ Rscript chart.r "cleaning_silver_jewelery.JPG.log" "JPG file" Read 22 items bash-3.2$
packer.sh
#!/bin/bash ## $1 stores filename of compressed file ## $2 stores number of iterations if [ ! $# -eq 2 ] ; then echo "usage: $0 file_name number_of_iterations" exit 1 elif [ ! -f $1 ]; then echo "$1 - file does not exists" exit 1 else ls -l $1 | awk '{ print $5 }' zip -q test_$1_0.zip $1 && ls -l test_$1_0.zip | awk '{ print $5 }' for (( i=1; i<=$2; i++ )); do zip -q test_$1_$i.zip test_$1_$((i-1)).zip && ls -l test_$1_$i.zip | awk '{ print $5 }' done rm test*zip fi
chart.r
args <- commandArgs(TRUE) sizes <- scan(args[1]) image_name <- paste( "./chart", args[1], ".png") png(filename=image_name, height=700, width=500, bg="white") barplot(sizes, main=args[2], xlab="iterations", ylab="size of zip archive [bytes]", xpd=F, col="black", ylim=c(min(sizes), max(sizes))) axis(2, at=c(min(sizes), max(sizes)))
They say that if you type "Google" into Google, then you will blow up the Internet, fortunately this similar experiment went safe :)
You can download source code (directory FileSizeAfterMultipleCompression) by cloning git@github.com:RobertGawron/snippets.git
Któż pakowałby tak pliki w kółko?
ReplyDelete