Spisovatelé nepracují jen se slovy, často musí pracovat s obrázky. Technické psaní zahrnuje předložení mnoha snímků obrazovky, které zprostředkují technologii a procesy. Různé platformy pro publikování mohou mít různé požadavky na obrázky, jako je formát obrázku nebo velikost souboru.
Jako IT konzultant a systémový inženýr jsem napsal mnoho technické dokumentace jako výstup pro klienty, obvykle s Microsoft Word (.doc) jako požadovaným formátem. Jakýkoli dokument může rychle růst s přidáváním obsahu. V prvních dnech byly snímky obrazovky často bitmapy (.bmp), které mohou mít velmi velkou velikost souboru. Dokument popisující instalaci operačního systému na server by mohl skončit jako velmi velký soubor.
Zmenšení obrázků bez toho, aby byly nečitelné, bylo pracné cvičení. Bitmapy lze převést na soubory jpeg a později soubory png. Úpravy byly výzvou i později, když jsem přešel svůj kancelářský balík na LibreOffice. Naštěstí se dnes většina nástrojů pro snímání obrazovky ukládá v menších formátech, jako je png.
Opensource.com klade určitá omezení na obrázky, které jsou použity v jeho článcích. Vyvinul jsem rychlou tříkrokovou metodu pro přípravu obrázků pro mé články. Prvním krokem je chytře pracovat s přípravou, jako je změna velikosti okna nebo změna písma. Dva další kroky se staly velmi opakujícími se. Ty mají zajistit, aby obrázek nepřesáhl limit šířky 600 pixelů, a použít ohraničení.
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Skript prepimg.sh
Napsal jsem Bash skript s názvem prepimg.sh
zvládnout tyto úkoly. Tento skript používá dva nástroje ze sady ImageMagick.
Změnit velikost obrázku
Nástroj pro snímky obrazovky uloží obrázek do Pictures
adresář s obecným názvem – něco jako Screenshot-20210923222312.png
. Můj prepimg.sh
skript zkontroluje šířku pixelů souborů v tomto adresáři a změní velikost souborů, které překračují limit. Tento krok používá identifikace program ze sady ImageMagick k určení šířky (%w).
$ identify -format %w Screenshot-20210903202655.png
1217
Hodnota šířky je přiřazena proměnné W
pro použití jako komparátor do limitu 600. Samotný limit je konfigurovatelný pomocí proměnné $MAXWIDTH
. Pokud je určeno, že šířka přesahuje MAXWIDTH, použije se jiný program ImageMagick s názvem convert je volána ke zmenšení šířky obrázku. Zde je funkce zpracování obrazu z mého skriptu:
if [ "$W" -gt "$MAXWIDTH" ]
then
[[ $VERBOSE -gt 0 ]] && echo "${1} is ${W} - reducing"
convert -resize "${MAXWIDTH}" \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
...
Obrázek se podle potřeby zmenší a uloží do jiného adresáře definovaného pomocí $READY
variabilní. V tomto případě je velikost obrázku ve skutečnosti změněna o něco menší – 598 pixelů – aby byl prostor pro přidání ohraničení, které uvedu dále.
Přidejte k obrázku rámeček
Někdy se může zdát, že obrázek splyne s pozadím webové stránky. Je to proto, že barva popředí obrázku až k jeho okraji je stejná jako barva pozadí webu. Zde je příklad:
Jak můžete vidět na obrázku výše, není možné určit, kde je okraj obrázku. Tento problém není omezen na bílou barvu. Záleží na každém jednotlivém webu a barvách motivu, které používá. Pokud je tedy pozadí červené a okraj obrázku je také červený, nastává stejný problém. Můj skript to řeší pomocí konvertovat nářadí. hranice přidá ke každému souboru obrázku ohraničení o velikosti 1 pixel. Tato možnost by sama o sobě stačila, ale chci také nastavit barvu pomocí -bordercolor volba. Zde je příklad:
convert -bordercolor black -border 1 Screenshot-20210903202655.png
Níže je stejný obrázek s okrajem. Nevypadá to lépe?
Váš obrázek je připraven
Používám for
smyčka pro iteraci adresářem snímku obrazovky. Volá funkci process_img
pro každý soubor. Funkce zpracovává šířku i okraj. Úplný kód provádí určitou kontrolu zdravého rozumu, například zajišťuje, že soubor je skutečně obrázkem.
process_img() {
# verify that file is an image file, and then get dimensions
if file "${SCREENSHOTS}"/"${1}" | grep -qE 'image|bitmap'; then
[[ $VERBOSE -gt 0 ]] && echo "${1} is an image"
W=$(identify -format %w "${SCREENSHOTS}"/"${1}")
else
echo "File ${SCREENSHOTS}/${1} is not an image."
W=0
fi
# resize and border
if [ "$W" -gt "$MAXWIDTH" ]
then
[[ $VERBOSE -gt 0 ]] && echo "${1} is ${W} - reducing"
convert -resize "${MAXWIDTH}" \
-bordercolor $BORDER \
-border 1 \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
else
convert -bordercolor $BORDER \
-border 1 \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
fi
}
Posledním krokem skriptu je uložení zpracovaných souborů do podadresáře s názvem Ready
, která je určena proměnnou s názvem $READY
. Tím se zachovají původní soubory pro další použití.
Použití
Prepimg.sh
zahrnuje očekávanou nápovědu popisující její argumenty a jejich použití:
$ prepimg.sh -h
prepimg.sh Version 0.7 - written by Alan Formy-Duval
prepimg.sh [OPTIONS]
--verbose, -v Be verbose
--directory, -d Screenshot directory (default: /home/alan/Pictures/Screenshots)
--ready, -r Ready directory (default: /home/alan/Pictures/Screenshots/Ready)
--border, -b Border color (default: black)
Kód a závěr
Kód uvedený v článku je neúplný a měl by být považován za pseudokód. Kompletní skript si můžete prohlédnout v mém úložišti Git.
Sada ImageMagick je výkonná sada nástrojů pro manipulaci s obrázky. Kromě funkcí zahrnutých v mém malém skriptu můžete dělat mnohem více věcí. Korespondent Jim Hall také nedávno psal o jeho použití ke změně velikosti obrázku.
Ať už dáváte přednost Bash skriptování nebo kódování v jiném jazyce, jako je C nebo Python, automatizace je skvělým pomocníkem. Čas od času jsem viděl, jak trocha kódu může snížit tolik bolestí hlavy a umožnit nám lépe využít náš čas.