Home

Awesome

GitHub release (latest by date) GitHub top language Shellcheck CI Bash CI GitHub code size in bytes GitHub issues basher install

splashmark

splashmark logo

Remix images by

Works with

Usage

Program : splashmark  by peter@forret.com
Version : v3.5.3 (Apr 14 21:33:20 2023)
Purpose : Mark up images (unspash/pixabay/URL) with titles, effects and resize
Usage   : splashmark [-h] [-q] [-v] [-l <log_dir>] [-t <tmp_dir>] [-w <width>] [-c <crop>] [-s <preset>] [-S <resize>] [-1 <northwest>] [-2 <northeast>] [-3 <southwest>] [-4 <southeast>] [-d <randomize>] [-D <number>] [-e <effect>] [-g <gravity>] [-i <title>] [-z <titlesize>] [-k <subtitle>] [-j <subtitlesize>] [-m <margin>] [-o <fontsize>] [-p <fonttype>] [-r <fontcolor>] [-x <photographer>] [-u <url>] [-P <PIXABAY_ACCESSKEY>] [-U <UNSPLASH_ACCESSKEY>] [-R <REPLICATE_ACCESSKEY>] [-X <EXPORT>] [-E <EXTENSION>] <action> <input?> <output?>
Flags, options and parameters:
    -h|--help        : [flag] show usage [default: off]
    -q|--quiet       : [flag] no output [default: off]
    -v|--verbose     : [flag] output more [default: off]
    -l|--log_dir <?> : [option] folder for log files   [default: /Users/pforret/log/splashmark]
    -t|--tmp_dir <?> : [option] folder for temp files  [default: /tmp/splashmark]
    -w|--width <?>   : [option] image width for resizing  [default: 1200]
    -c|--crop <?>    : [option] image height for cropping  [default: 0]
    -s|--preset <?>  : [option] image size preset
    -S|--resize <?>  : [option] multiply preset with factor
    -1|--northwest <?>: [option] text to put in left top
    -2|--northeast <?>: [option] text to put in right top  [default: {url}]
    -3|--southwest <?>: [option] text to put in left bottom  [default: Created with pforret/splashmark]
    -4|--southeast <?>: [option] text to put in right bottom  [default: {copyright2}]
    -d|--randomize <?>: [option] take a random picture in the first N results  [default: 1]
    -D|--number <?>  : [option] take the Nth picture from query results  [default: 1]
    -e|--effect <?>  : [option] use effect chain on image: bw/blur/dark/grain/light/median/paint/pixel
    -g|--gravity <?> : [option] title alignment left/center/right  [default: center]
    -i|--title <?>   : [option] big text to put in center
    -z|--titlesize <?>: [option] font size for title  [default: 80]
    -k|--subtitle <?>: [option] big text to put in center
    -j|--subtitlesize <?>: [option] font size for subtitle  [default: 50]
    -m|--margin <?>  : [option] margin for watermarks  [default: 30]
    -o|--fontsize <?>: [option] font size for watermarks  [default: 15]
    -p|--fonttype <?>: [option] font type family to use  [default: FiraSansExtraCondensed-Bold.ttf]
    -r|--fontcolor <?>: [option] font color to use  [default: FFFFFF]
    -x|--photographer <?>: [option] photographer name (empty: use name from API)
    -u|--url <?>     : [option] photo URL override (empty: use URL from API)
    -P|--PIXABAY_ACCESSKEY <?>: [option] Pixabay access key
    -U|--UNSPLASH_ACCESSKEY <?>: [option] Unsplash access key
    -R|--REPLICATE_ACCESSKEY <?>: [option] Replicate API key
    -X|--EXPORT <?>  : [option] export to subfolder  [default: export]
    -E|--EXTENSION <?>: [option] image extension to use  [default: jpg]
    <action>         : [choice] action to perform  [options: unsplash,pixabay,text2image,file,folder,url,sizes,check,env,update]
    <input>          : [parameter] URL or search term (optional)
    <output>         : [parameter] output file (optional)
     
### TIPS & EXAMPLES
* use splashmark unsplash to download or search a Unsplash photo (requires free Unsplash API key)
  splashmark unsplash "https://unsplash.com/photos/lGo_E2XonWY" rose.jpg
  splashmark unsplash "rose" "rose.jpg"
  splashmark unsplash rose (will generate unsplash.rose.jpg)
* use splashmark text2image to create an AI generated photo (requires Replicate API key)
  splashmark text2image "picture of a red rose" rose.jpg
  splashmark text2image "prompt"
* use splashmark pixabay to download or search a Pixabay photo (requires free Pixabay API key)
  splashmark pixabay "https://pixabay.com/photos/rose-flower-love-romance-beautiful-729509/" rose.jpg
  splashmark pixabay rose rose.jpg
  splashmark pixabay rose (will generate pixabay.rose.jpg)
* use splashmark file to add texts and effects to a existing image
  splashmark file waterfall.jpg sources/original.jpg
  splashmark --title "Strawberry" -w 1280 -c 640 -e dark,median,grain file sources/original.jpg waterfall.jpg
* use splashmark folder to add texts and effects to a existing image
  splashmark folder /home/folder
  splashmark --title "Strawberry" -w 1280 -c 640 -e dark,median,grain file sources/original.jpg waterfall.jpg
* use splashmark url to add texts and effects to a image that will be downloaded from a URL
  splashmark file waterfall.jpg "https://i.imgur.com/rbXZcVH.jpg"
  splashmark -w 1280 -c 640 -4 "Photographer: John Doe" -e dark,median,grain url "https://i.imgur.com/rbXZcVH.jpg" waterfall.jpg
* use splashmark check to check if this script is ready to execute and what values the options/flags are
  splashmark check
* use splashmark env to generate an example .env file
  splashmark env > .env
* to create a social image for Github
  splashmark -w 1280 -c 640 -z 100 -i "<user>/<repo>" -k "line 1\nline 2" -r EEEEEE -e median,dark,grain unsplash <keyword>
* to create a social image for Instagram
  splashmark -w 1080 -c 1080 -z 150 -i "Carpe diem" -e dark pixabay clouds clouds.jpg
* to create a social image for Facebook
  splashmark -w 1200 -c 630 -i "20 worldwide destinations\nwith the best beaches\nfor unforgettable holidays" -e dark unsplash copacabana

installation

  1. install requirements
# On Linux
sudo apt install exiftool imagemagick jq
# on MacOS
brew install exiftool imagemagick jq
  1. via basher
basher install pforret/splashmark
  1. or otherwise clone the repo
git clone https://github.com/pforret/splashmark.git
sudo ln -s splashmark/splashmark /usr/bin/
  1. Get your API keys on
  1. install API keys
vi splashmark/.env
# copy/paste `UNSPLASH_ACCESSKEY` value

UNSPLASH_ACCESSKEY="(unsplash key)"
PIXABAY_ACCESSKEY="(pixabay key)"
REPLICATE_ACCESSKEY="(replicate key)"

Example (verbose) output:

$ splashmark -w 800 -p UbuntuMono-Bold.ttf -e median,dark,grain -1 "font: UbuntuMono Bold, via Google Fonts" -2 "Photo: {url}" -3 "www.example.com" -4 {copyright} -i "Just an example" -v unsplash beach examples/example.jpg

# 🌱 Expect : 1 single parameter(s): action
# 🌱 Assign : action=unsplash
# 🌱 Expect : 2 optional parameter(s): input output
# 🌱 Assign : input=beach
# 🌱 Assign : output=example.jpg
# 🧽 Cleanup folder: [/tmp/splashmark] - delete files older than 1 day(s)
# 🌱 tmp_file: /tmp/splashmark/2021-04-20.CCTrVM
# 🧽 Cleanup folder: [/Users/<user>/log/splashmark] - delete files older than 30 day(s)
# 🌱 log_file: /Users/<user>/log/splashmark/splashmark.2021-04-20.log
# ️🔌 required [curl] -> /usr/bin/curl
# ️🔌 required [jq] -> /usr/local/bin/jq
# Unsplash API = [https://api.unsplash.com/search/photos/?query=beach] 
# Output file: [example.jpg]
# Unsplash photo ID = [M8CClPDw02I]
# ️🔌 required [jq] -> /usr/local/bin/jq
# Unsplash API = [https://api.unsplash.com/photos/M8CClPDw02I] 
# IMG = [https://images.unsplash.com/photo-1591017403286-fd8493524e1e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxNzAwMTV8MHwxfGFsbHx8fHx8fHx8fDE2MTg5NTE1OTk&ixlib=rb-1.2.1&q=80&w=1080] 
# ️🔌 required [jq] -> /usr/local/bin/jq
# API = [/tmp/splashmark/unsplash.0cff5d45.json]
# ️🔌 required [jq] -> /usr/local/bin/jq
# API = [/tmp/splashmark/unsplash.0cff5d45.json]
# META: Photographer: Boxed Water Is Better
# META: URL: https://unsplash.com/photos/M8CClPDw02I
# ️🔌 required [convert] -> /usr/local/bin/convert
# FONT [/Users/<user>/.basher/cellar/packages/pforret/splashmark/fonts/UbuntuMono-Bold.ttf] exists as a splashmark font
# SIZE: to 800 wide --> example.jpg
# EXIF: set [Writer-Editor] to [https://github.com/pforret/splashmark] for [example.jpg]
# EXIF: set [Artist] to [Boxed Water Is Better] for [example.jpg]
# EXIF: set [Creator] to [Boxed Water Is Better] for [example.jpg]
# EXIF: set [OwnerID] to [Boxed Water Is Better] for [example.jpg]
# EXIF: set [OwnerName] to [Boxed Water Is Better] for [example.jpg]
# EXIF: set [Credit] to [Photo: Boxed Water Is Better on Unsplash.com] for [example.jpg]
# EXIF: set [ImageDescription] to [Photo: Boxed Water Is Better on Unsplash.com] for [example.jpg]
# ️🔌 required [mogrify] -> /usr/local/bin/mogrify
# EFX : median
# EFX : dark
# EFX : grain
# ️🔌 required [mogrify] -> /usr/local/bin/mogrify
# MARK: [font: UbuntuMono Bold, via Google Fonts] in NorthWest corner ...
# ️🔌 required [mogrify] -> /usr/local/bin/mogrify
# MARK: [Photo: unsplash.com/photos/M8CClPDw02I] in NorthEast corner ...
# ️🔌 required [mogrify] -> /usr/local/bin/mogrify
# MARK: [www.example.com] in SouthWest corner ...
# ️🔌 required [mogrify] -> /usr/local/bin/mogrify
# MARK: [Photo by Boxed Water Is Better on Unsplash.com] in SouthEast corner ...
# MARK: title [Just an example] in Center ...
example.jpg
# splashmark finished after 7 seconds

example.jpg

Examples

check EXAMPLES.md

Size presets

$ splashmark sizes
cinema:flat          WxH: 1998 x 1080
cinema:hd            WxH: 1920 x 1080
cinema:scope         WxH: 2048 x  858
facebook:cover       WxH:  851 x  315
facebook:horizontal  WxH: 1200 x  630
facebook:story       WxH: 1080 x 1920
facebook:vertical    WxH: 1080 x 1350
github:repo          WxH: 1280 x  640
instagram:horizontal WxH: 1350 x 1080
instagram:square     WxH: 1080 x 1080
instagram:story      WxH: 1080 x 1920
instagram:vertical   WxH: 1080 x 1350
linkedin:horizontal  WxH: 1104 x  736
medium:horizontal    WxH: 1500 x 1200
pinterest:vertical   WxH: 1000 x 1500
tumblr:vertical      WxH: 1280 x 1920
twitter:header       WxH: 1500 x  500
twitter:post         WxH: 1024 x  512

© 2020 Peter Forret