NFsec Logo

Uszczuplanie plików JPEG na małą skalę

20/10/2012 w Administracja Brak komentarzy.  (artykuł nr 377, ilość słów: 321)

N

a jednym z serwerów X pełniącym rolę WWW w katalogu Y znajduje się blisko 150.000 różnych plików graficznych typu dżej-peg. Ich średnia* wielkość wynosi 26.56 KB. W dwóch próbach zostały one poddane działaniu programu jpegtran z następującymi parametrami:

#!/bin/sh

JPEGS=`ls | grep jpg`

for j in $JPEGS
do
    jpegtran -copy none -optimize -progressive -perfect $j > $j".tmp"
    if [ $? = 0 ]; then
        mv -f $j".tmp" $j
    else
        rm $j".tmp"
    fi
done

Pierwsza próba obejmowała 80.266 plików o łącznej zajętości 2479,77 MB. Po przejściu programu jpegtran zajmowane przez nie miejsce na dysku spadło do 2332,29 MB, czyli zwolnione zostało 147,48 MB. Druga próba obejmowała 69.726 plików, które zostały dodane jakiś czas po pierwszej próbie. Ich łączy rozmiar wynosił 1731,95 MB. Po przejściu programu jpegtran zajmowane przez nie miejsce na dysku spadło do 1597,6 MB, czyli zwolnione zostało 134,35 MB.

Zabieg ten głównie miał na celu usunięcie zbędnych informacji z plików graficznych (-copy none), zastosowanie progresywnej kompresji (-progressive) umożliwiającej wyświetlanie grafik od początku ich pobierania w postaci warstw oraz optymalizację (-optimize), która w niektórych przypadkach może bezstratnie zredukować wielkość pliku JPG nawet do 50%.

* w celu obliczenia średniej wielkości wszystkich plików został wykorzystany skrypt:

#!/bin/sh

NUMFILES=$(find . -maxdepth 1 -type f | wc -l)
TOTAL=$((0))

for EACH in $(find . -maxdepth 1 -type f | ls -la | awk '{print $5}'); do
 TOTAL=$((TOTAL+EACH))
done

AVERAGE=$(echo "scale = 2; $TOTAL / $NUMFILES / 1024" | bc -l)

echo "Average file size: $AVERAGE KB."

Warto wspomnieć, że na próbkę liczącą 149992 plików, żaden z nich nie został w jakikolwiek sposób uszkodzony, czy zniekształcony (prawie co trzeci plik pochodził z innego źródła / użytkownika).

Więcej informacji: JPEGclub

Kategorie K a t e g o r i e : Administracja

Tagi T a g i : , , ,

Komentowanie tego wpisu jest zablokowane.