Cred c-ați văzut până acum pe diferite site-uri/ bloguri imagini marcate cu vreo siglă sau inscripție, pentru a nu fi copiate de altcineva fără a fi specificată sursa, sau pentru a personaliza imaginea respectivă. Sigla/ imaginea/ inscripția adăugată imaginii se numește watermark. Putem folosi imagini .png, .jpg, .jpeg, etc.
Hai să vedem cum putem face și noi același lucru cu imaginile puse pe bloguri, fie că sunt screenshoturi sau altceva. Cum sunt pasionat de CLI, aceasta va fi metoda prezentată. Trebuie să instalăm pachetul imagemagick din care vom folosi câteva utilitare precum: import, convert și composite.
În primul rând avem nevoie de o imagine, să ”personalizăm” un screenshot. De obicei folosesc scrot sau ksnapshot (și fbgrab în tty), dar acum vom folosi import, pentru a ne limita la pachetul imagemagick...
Comanda folosită în consolă va fi: import -window root screen.png
Parametrul -window root este necesar pentru a captura tot ecranul cu ferestrele deschise pe el, altfel vom captura doar o ferestră sau wallpaperul de pe desktop...
Acesta este screenshotul rezultat:
Acum avem imaginea, haideți să o marcăm cu un text sau cu altă imagine.
-center = centrul imaginii
-south = centru- jos
-north = centru- sus
-east = dreapta
-west = stânga
-northwest = dreapta- sus
-northeast = stânga- sus
-southwest = stânga- jos
-southeast = dreapta- jos
Două exemple:
composite label:Stressat -gravity southwest screen.png screen2.png
Să mergem mai departe, poate dorim un font mai mare, sau alt tip de font, alte culori, sau alte modificări. Comanda:
convert screen.png -gravity south \
-stroke '#000C' -strokewidth 6 -pointsize 60 -annotate 0 'Stressat' \
-stroke none -fill white -annotate 0 'Stressat' \
screen4.png
va da următorul rezultat:
Parametrul -pointsize stabilește dimensiunea fontului, -fill setează culoarea textului, putem folosi mai multe cuvinte în textul adăugat, etc.
convert screen.png -gravity center \
-stroke '#000C' -strokewidth 6 -pointsize 60 -annotate 0 'Stressat' \
-stroke none -fill yellow -annotate 0 'Stressat.blogspot.com' \
screen4.png
Deasemenea putem afișa textul pe mai multe linii:
convert screen.png -gravity center \
-stroke '#000C' -strokewidth 6 -pointsize 60 -annotate 0 'Stressat' \
-stroke none -fill red -annotate 0 'Stressat \n.blogspot \n.com' \
screen5.png
convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
-fill navy -annotate +25+65 'Stressat' \
-distort Arc 120 -trim +repage \
-bordercolor lightblue -border 10 font_arc.jpg
ne va face logo-ul următor:
convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
-fill red -annotate +25+65 'Stressat' \
-background lightblue -wave -50x640 -crop x110+0+10 \
font_wavy.jpg
va face alt logo:
convert -size 320x100 xc:black -font Arial -pointsize 80 \
-fill white -annotate +5+70 'Stressat' \
-gamma 2 +level 0,1000 -white-threshold 999 \
-morphology Distance:-1 Chebyshev:1,1000 -auto-level \
-shade 135x30 -auto-level +level 10,90% font_chebyshev.jpg
ne va crea un logo mai tern:
Tot ce ne rămâne de făcut este să ”lipim” unul din aceste logo-uri imaginii destinate personalizării. Acum vom folosi comanda composite:
Putem folosi și opțiune de transparență pentru logo (-dissolve x, unde x reprezintă valoarea transparenței în procente: -dissolve 45 înseamnă coeficient de transparență de 45%, etc, cu cât coeficientul este mai mic cu atât opacitatea este mai mică, logo-ul fiind mai transparent), o posibilă comanda este:
Folosind un logo ca watermark, și captura de ecran (zona unde va fi pus logo va fi în acest exemplu colțul stânga- jos) vom avea:
composite -gravity southwest font_wavy.jpg screen.png screen-watermark.png
Evident putem folosi și altceva ca watermark, o altă imagine de exemplu.
Se pot adăuga simultan în mai multe poziții watermarks:
convert screen.png \
> -gravity center watermark.png -compose Over -composite \
> -gravity northeast watermark.png -compose Over -composite \
> -gravity southwest watermark.png -compose Over -composite \
> screen-multip.png
3- Marcare în grup
Haideți să vedem cum putem adăuga watermarks la mai multe imagini simultan, idee și script luate de aici: http://savvyadmin.com/resize-and-watermark-images-in-linux/).
Presupunem că avem imaginile noastre în directorul ~/Pictures, vom crea încă două directoare ~/Pictures/temp și ~/Pictures/watermark. În temp vom copia imaginile cărora dorim să le adăugăm watermark, iar în watermark vom copia imaginea care va servi de watermark. Watermarkul va trebui redimensionat la o mărime rezonabilă (sau căutăm pe net o imagine mică, gen pictogramă), o unealtă comodă este Kim4 : vedeți aici la ce mă refer, sau folosind convert:
convert -resize 80 sursă.png rezultat.png
Comanda precedentă va redimensiona imaginea inițială (sursă.png) la o valoare de 80 pixeli pe lățime (înălțimea fiind calculată automat în raport...), iar imaginea micșorată se va numi rezultat.png (veți înlocui denumirile sursă și rezultat cu ce trebuie).
Ok, să trecem la treabă. Vom crea un fișier text numit watermark.sh (touch watermark.sh) în care vom copia următorul text:
Vom face fișierul executabil (chmod a+x watermark.sh), copiem câteva imagini în ~/Pictures/temp și le adăugăm watermarkul din ~/Pictures/watermark:
./watermark.sh
Puteți vedea cum lucrează marcarea în bloc a câtorva imagini și una din ele:
Imagemagick știe să facă mult mai mult de atât, puteți citi documentația excelentă, sunt date exemple concrete...
Sursă: http://www.imagemagick.org/Usage/
PS: Fără legătură cu watermarks, doar cu manipularea în alt mod a imaginilor cu imagemagick, adăugarea watermarks fiind doar un fel de manipulare... În încheiere vreau să vă prezint două chestii amuzante privind manipularea imaginilor cu imagemagick:
1- captură ”negativ” desktop (culori inversate):
import -window root -negate negativ.png
Putem obține și negativul unei imagini pe care o avem deja, vom lua de exemplu screnshotul cu care am început acest material:
convert -negate screen.png screen-neg.png
2- rotire captură (opțiune -rotate grade):
import -window root -rotate 15 rot.png
Hai să vedem cum putem face și noi același lucru cu imaginile puse pe bloguri, fie că sunt screenshoturi sau altceva. Cum sunt pasionat de CLI, aceasta va fi metoda prezentată. Trebuie să instalăm pachetul imagemagick din care vom folosi câteva utilitare precum: import, convert și composite.
În primul rând avem nevoie de o imagine, să ”personalizăm” un screenshot. De obicei folosesc scrot sau ksnapshot (și fbgrab în tty), dar acum vom folosi import, pentru a ne limita la pachetul imagemagick...
Comanda folosită în consolă va fi: import -window root screen.png
Parametrul -window root este necesar pentru a captura tot ecranul cu ferestrele deschise pe el, altfel vom captura doar o ferestră sau wallpaperul de pe desktop...
Acesta este screenshotul rezultat:
Acum avem imaginea, haideți să o marcăm cu un text sau cu altă imagine.
1- Marcare cu text
În același terminal/ consolă vom da o comandă care va adăuga un text imaginii, în funcție de preferințele noastre, folosindu-ne de composite sau convert. Cea mai simplă variantă este următoarea: composite label:TEXT opțiuni sursă.png rezultat.png
Implicit textul va fi adăugat în colțul stânga sus, dacă preferăm altă parte a imaginii vom folosi opțiunea -gravity, la care trecem locul dorit. Valorile recunoscute de gravity:-center = centrul imaginii
-south = centru- jos
-north = centru- sus
-east = dreapta
-west = stânga
-northwest = dreapta- sus
-northeast = stânga- sus
-southwest = stânga- jos
-southeast = dreapta- jos
Două exemple:
composite label:Stressat screen.png screen1.png
composite label:Stressat -gravity southwest screen.png screen2.png
Să mergem mai departe, poate dorim un font mai mare, sau alt tip de font, alte culori, sau alte modificări. Comanda:
convert screen.png -gravity south \
-stroke '#000C' -strokewidth 6 -pointsize 60 -annotate 0 'Stressat' \
-stroke none -fill white -annotate 0 'Stressat' \
screen4.png
va da următorul rezultat:
Parametrul -pointsize stabilește dimensiunea fontului, -fill setează culoarea textului, putem folosi mai multe cuvinte în textul adăugat, etc.
convert screen.png -gravity center \
-stroke '#000C' -strokewidth 6 -pointsize 60 -annotate 0 'Stressat' \
-stroke none -fill yellow -annotate 0 'Stressat.blogspot.com' \
screen4.png
Deasemenea putem afișa textul pe mai multe linii:
convert screen.png -gravity center \
-stroke '#000C' -strokewidth 6 -pointsize 60 -annotate 0 'Stressat' \
-stroke none -fill red -annotate 0 'Stressat \n.blogspot \n.com' \
screen5.png
2- Marcare cu imagine/ logo
Putem crea noi mici imagini logo cu care să marcăm imaginile noastre. Voi continua cu același exemplu, cu textul ”Stressat”.convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
-fill navy -annotate +25+65 'Stressat' \
-distort Arc 120 -trim +repage \
-bordercolor lightblue -border 10 font_arc.jpg
ne va face logo-ul următor:
convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
-fill red -annotate +25+65 'Stressat' \
-background lightblue -wave -50x640 -crop x110+0+10 \
font_wavy.jpg
va face alt logo:
convert -size 320x100 xc:black -font Arial -pointsize 80 \
-fill white -annotate +5+70 'Stressat' \
-gamma 2 +level 0,1000 -white-threshold 999 \
-morphology Distance:-1 Chebyshev:1,1000 -auto-level \
-shade 135x30 -auto-level +level 10,90% font_chebyshev.jpg
ne va crea un logo mai tern:
Tot ce ne rămâne de făcut este să ”lipim” unul din aceste logo-uri imaginii destinate personalizării. Acum vom folosi comanda composite:
composite -gravity ”poziție” ”watermark” ”imagine sursă” ”imagine rezultată”
Putem folosi și opțiune de transparență pentru logo (-dissolve x, unde x reprezintă valoarea transparenței în procente: -dissolve 45 înseamnă coeficient de transparență de 45%, etc, cu cât coeficientul este mai mic cu atât opacitatea este mai mică, logo-ul fiind mai transparent), o posibilă comanda este:
composite -gravity north -dissolve 20 logo.png imagine.png rezultat.png
composite -gravity north -dissolve 20 logo.jpg screen.png screen8.png
composite -gravity north -dissolve 20 logo.jpg screen.png screen8.png
Folosind un logo ca watermark, și captura de ecran (zona unde va fi pus logo va fi în acest exemplu colțul stânga- jos) vom avea:
composite -gravity southwest font_wavy.jpg screen.png screen-watermark.png
Evident putem folosi și altceva ca watermark, o altă imagine de exemplu.
composite -gravity southwest Pictures/samurai.jpg screen.png screen-watermark1.png
Se pot adăuga simultan în mai multe poziții watermarks:
convert screen.png \
> -gravity center watermark.png -compose Over -composite \
> -gravity northeast watermark.png -compose Over -composite \
> -gravity southwest watermark.png -compose Over -composite \
> screen-multip.png
3- Marcare în grup
Haideți să vedem cum putem adăuga watermarks la mai multe imagini simultan, idee și script luate de aici: http://savvyadmin.com/resize-and-watermark-images-in-linux/).
Presupunem că avem imaginile noastre în directorul ~/Pictures, vom crea încă două directoare ~/Pictures/temp și ~/Pictures/watermark. În temp vom copia imaginile cărora dorim să le adăugăm watermark, iar în watermark vom copia imaginea care va servi de watermark. Watermarkul va trebui redimensionat la o mărime rezonabilă (sau căutăm pe net o imagine mică, gen pictogramă), o unealtă comodă este Kim4 : vedeți aici la ce mă refer, sau folosind convert:
convert -resize 80 sursă.png rezultat.png
Comanda precedentă va redimensiona imaginea inițială (sursă.png) la o valoare de 80 pixeli pe lățime (înălțimea fiind calculată automat în raport...), iar imaginea micșorată se va numi rezultat.png (veți înlocui denumirile sursă și rezultat cu ce trebuie).
Ok, să trecem la treabă. Vom crea un fișier text numit watermark.sh (touch watermark.sh) în care vom copia următorul text:
#!/bin/bash
WATERMARK="$HOME/Pictures/watermark/watermark.png"
echo "*****************************************"
echo "* Image Resize and Watermarking Script *"
echo "* By Gilbert Mendoza - SavvyAdmin.com! *"
echo "*****************************************"
echo " "
for each in ~/Pictures/temp/*{.jpg,.jpeg,.png}
do
echo "Working on $each ..."
composite -gravity southwest $WATERMARK "$each" "$each" >> /dev/null
echo "... Done!"
done
exit 0
Vom face fișierul executabil (chmod a+x watermark.sh), copiem câteva imagini în ~/Pictures/temp și le adăugăm watermarkul din ~/Pictures/watermark:
./watermark.sh
Puteți vedea cum lucrează marcarea în bloc a câtorva imagini și una din ele:
Imagemagick știe să facă mult mai mult de atât, puteți citi documentația excelentă, sunt date exemple concrete...
Sursă: http://www.imagemagick.org/Usage/
PS: Fără legătură cu watermarks, doar cu manipularea în alt mod a imaginilor cu imagemagick, adăugarea watermarks fiind doar un fel de manipulare... În încheiere vreau să vă prezint două chestii amuzante privind manipularea imaginilor cu imagemagick:
1- captură ”negativ” desktop (culori inversate):
import -window root -negate negativ.png
Putem obține și negativul unei imagini pe care o avem deja, vom lua de exemplu screnshotul cu care am început acest material:
convert -negate screen.png screen-neg.png
2- rotire captură (opțiune -rotate grade):
import -window root -rotate 15 rot.png
Sau putem roti o imagine existentă:
convert -rotate 320 screen.png screen-rot.png
Putem folosi în paralel cele două opțiuni:
convert -rotate 345 -negate screen.png screen-modify.png