Dělal jsem to chvíli v Canva, ale je to trochu opruz. Otevřít Canva, nahrát obrázek, vyvolat menu, editace, efekty, stín, stáhnout obrázek. Pak jsem se šel ChatGPT zeptat, jestli nejde Canva nějak automatizovat. A nepotěšila, čekal jsem to, nemá API, takže to prostě snadno nejde.
Ale je tu klasicky snadná cesta přes Image Magick nebo přes Python. Používám oboje, ale na “ostínování” je Image Magic přeci jen rychlejší. Takže jsem si od ChatGpt nechal napsat příkaz právě pro ostínování.
Zadání: Mám Canva. Je nějak možné automatizovat využítí Canva pro přidání stínu k fotografii? Ručně to umím, nahrát fotku, editace, přidat efekt v podobě stínu, uložit (stáhnout) fotku. Ale šlo by to vyvolat na jedno kliknutí?
….
Zadání: Dobré, jak tedy mohu přidat stín k fotografii. Ať už v pythonu, powershellu, využít něco jako image magick?

Nejprve mi navrhla kousek s escapováním závorky jako “\(“ a nefungovalo to, ale to můžete ChatGPT říct, ona se omluví a napíše to použitelné – ve Windows to totiž není nutné. Takže jsem dostal první ostínování, které dávalo stín vpravo a dolů.
magick input.jpg ( +clone -background black -shadow 60x5+10+10 ) +swap -background none -layers merge +repage output.jpg
Funkční, snadné a rychlé. Chtěl jsem ale ostínováí na všechny strany, tak aba to “vystupovalo” z pozadí. Dost se to hodí při vkládání na socnety. A i to ChatGPT po mírném zmatení poskytla.
magick input.jpg ( +clone -background black -shadow 100x3+0+0 ) +swap -background transparent -layers merge +repage output.jpg
Poskytuje k tomu i vysvětlení parametrů, takže to 100×3+0+0 si lze změnit na větší šířku stínu – je to ta trojka. 100 znamená 100 % opacitu.
Výsledný skript, tedy lépe řečeno dávkový .cmd (.bat) soubor nakonec opět přijde do XnView MP pro vyvolání z menu, takže je nutné ho ještě doplnit o získání parametru – tedy jména soubory a také cesty. To aby výsledný soubor byl uložen tam kde původní. Fullshadow.bat pak vypadá takto
for %%i in (%1) do set "cdpath=%%~dpi"
for %%i in (%1) do set "myfilename=%%~nxi"magick "%cdpath%\%myfilename%" ( +clone -background black -shadow 100x8+0+0 ) +swap -background transparent -layers merge +repage "%cdpath%\shadowed-%myfilename%"
Vezme vstupní soubor a vytvoří “shadowed-původníjmeno” výstup.
Můžete ale narazit na další zádrhel. Ostínování funguje dobře pro PNG, nefunguje u JPG. ChatGPT na to snadno přijde a problém je, že JPG nemá transparentnost. Takže nabídne i úpravy volání ImageMagick spočívající v převodu na formát co umožňuje transparentnost a poté uložení výstupu v původním formátu.
magick "%cdpath%\%myfilename%" -background none -flatten ( +clone -background black -shadow 80x8+0+0 ) +swap -background white -layers merge +repage "%cdpath%\shadowed-%myfilename%"


Což nakonec bude fungovat i pro JPG. Byť tady bude mírný problém s nedostatkem průhlednosti, takže stín je prostě na bílém pozadí. Řešitelné tak, že budete používat výchozí obrázek v PNG a tím i výsledek v png, tedy s průhledností.
Další kupa ušetřeného času.
TIP: Pokud to chcete pro Mac, tak viz Jak na MacOS přidat stín k obrázkům (pokračování řešení pro Windows)
