Strona główna Skrypt do zmiany rozdzielczości grafiki
Wpis
Anuluj

Skrypt do zmiany rozdzielczości grafiki

Skrypt do zmiany rozdzielczości grafiki

Jak to w życiu bywa, czasami trzeba się pobawić bardzo prostymi rzeczami, które w małej liczbie są przyjemne, zaś w dużej - stają się nudne. Tak jest z grafiką, którą w liczbie większej od 100 musimy zoptymalizować poprzez zmniejszenie rozdzielczości. Ale od czego jest Linux i shell…

Prosty skrypt, wykorzystujący bibliotekę ImageMagick (znaleziony na G), który wystarczy skonfigurować, podając katalog z grafiką, oraz maksymalną wysokość i szerokość grafiki, a następnie tylko czekać na efekty:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/bash

if [ $# -le 0 ]; then
    echo "Użycie: resize_images.sh <ścieżka_do_katalogu>"
    exit 1
fi

final_width=800
final_height=800
dir_name="$1"

echo "Modyfikuję pliki z katalogu $dir_name"

for file in "$dir_name"/*.[jJ][pP][gG]; do
    width=`identify -format %w "$file"`
    height=`identify -format %h "$file"`
    if [ $width -gt $height ]; then
        if [ $width -le $final_width ]; then
            echo "$file: size = $width"x"$height, rozmiary nie przekraczają maksimum! Zmiany nie dokonano"
            continue;
        fi
        new_height=`echo "$height*$final_width/$width" | bc`
        file_basename=`basename "$file"`
        file_dirname=`dirname "$file"`
        new_file_name=""$file_dirname"/scaled_$file_basename"
     
        # resize the image
        echo "$file: rozmiar = $width"x"$height, zmieniam na " "$final_width"x"$new_height"
        convert -resize "$finale_width"x"$new_height" "$file" "$new_file_name"

        # replace the original file with the scaled file
        rm -f "$file"
        if [ $? -eq "0" ]; then
            mv "$new_file_name" "$file"
        fi
    else
        if [ $height -le $final_height ]; then
            echo "$file: rozmiar = $width"x"$height, rozmiary nie przekraczają maksimum! Zmiany nie dokonano"
            continue;
        fi
        new_width=`echo "$width*$final_height/$height" | bc`
        file_basename=`basename "$file"`
        file_dirname=`dirname "$file"`
        new_file_name=""$file_dirname"/scaled_$file_basename"
    
        # resize the image
        echo "$file: rozmiar = $width"x"$height, zmieniam na $new_width"x"$final_height"    
        convert -resize "$new_width"x"$final_height" "$file" "$new_file_name"

        # replace the original file with the scaled file
        rm -f "$file"
        if [ $? -eq "0" ]; then
            mv "$new_file_name" "$file"
        fi
    fi
done

echo "Zrobione"
Ten post jest udostępniony na licencji CC BY 4.0 przez autora.

QNapi - linuksowy Napiprojekt

Ściąganie dużych plików przy pomocy WGET'a (+ praca w tle)