PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : image magick convert kommando



gEnTi
18.08.04, 19:40
ich blick da nicht ganz durch..

ich hab ein verzeichnis voller gif bilder, und die sind leider farbig, aber ich möchte die möglichst automatisch in ein graustufenbild umwandeln. also sollte wohl nicht so schwierig sein. aber im internet und --help find ich da nichts von wegen greyscale oder so ähnlich....

habt ihr da ein besseres verständnis?

carnil
18.08.04, 22:55
Hi

Also so kannst du in Graustufe konvertieren:


convert -colorspace gray imput.jpg output.jpg

Das ganze in einem Bashskript, sollte dann das erfüllen was du suchst.

MfG carnil

panzi
18.08.04, 23:21
Vieleicht hilft dir dieses bash script weiter, welches ich mal geschreiben hab. Das skalliert alle Bilder (default: JPG, JPEG) im aktuellen Ordner, wobei skallierfaktor (default: 40%) und quallität (default: 75) angegeben werden können.
Die neuen Bilder werden im Unterordner scaled (kann auch angeg. werden) gespeichert, welcher erstellt wird, sofern er nicht vorhanden ist.

Und Bilder die rl bzw. rr vor der endung stehn haben werden um 90° links bzw. rechts rotiert.


#!/bin/bash

scale="40x40%"
quality=75
scaldir="scaled"
exts='[Jj][pP][gG] [Jj][pP][eE][gG]'

function do_scale() {
if ls *$1 1> /dev/null 2> /dev/null; then
for img in *$1; do
printf "%s \"%s\" ... " "$2" "$img"

convert $params $3 "$img" "$scaldir/$img"

if [ $? -eq 0 ]; then
printf "DONE\n"
else
printf "FAILED\n"
fi
done
fi
}

if [ $# -ge 1 ]; then
scale="$1"

if [ $# -ge 2 ]; then
quality="$2"

if [ $# -ge 3 ]; then
scaldir="$3"

if [ $# -ge 4 ]; then
exts="$4"
fi
fi
fi
fi

params=" -scale '$scale' -quality '$quality' "

if [ ! -d "$scaldir" ]; then
mkdir "$scaldir"
fi

printf "\n\tscale: %8s\n\tquality: %8d\n\n" \
"$scale" \
$quality

for ext in $exts; do
do_scale '[^rR][^rRlL]'."$ext" "scale"
do_scale '[rR][lL]'."$ext" "scale and rotate left" "-rotate -90"
do_scale '[rR][rR]'."$ext" "scale and rotate right" "-rotate 90"
done

exit 0

gEnTi
19.08.04, 12:48
danke, da lässt sich bestimmt was draus machen...
vor allem aus diesem teil hier:
for img in *$1; do
printf "%s \"%s\" ... " "$2" "$img"

convert $params $3 "$img" "$scaldir/$img"

if [ $? -eq 0 ]; then
printf "DONE\n"
else
printf "FAILED\n"
fi
done

ich nehm mal an, dass dieses alle dateien in einem ordner durchgeht...