A pipeline passing an image between different micro services to crop, caption, watermark, hashtagify and finally post it to social media.
NOTE: Currently all models used are cpu based.
- Receive a new image
- Store original image in local storage and save its path
- Retrieve the bounding box of the motif of the image and store it
- Crop (and compress) the image (resolution is based on a setting) so that the bounding box is centered
- Provide the user the option to re-crop the image, especially if the bounding box is too large for the resolution
- Generate a caption for the image
- Give the user the option to edit the caption
- Watermark the image (location is again based on a setting)
- Generate hashtags based on the caption
- User can upload an image
- User can crop the image
- User gets a recommended crop based on the subject of the image (if the bounding box is not too large)
- User can edit the caption
- User gets a recommended caption based on the cropped image
- User can edit the hashtags
- User gets a recommended hashtags based on the caption
- User can specify the watermark
- User can freely move the watermark
- User can specify the resolution of the image
- The application should be able to run on a local machine
- The application should be able to run on a server
- The application should be able to run on a cloud provider
- The application should be able to run on a container
- The application should be able to run on a container orchestrator
- All but the service accessed by the FE should only communicate via gRPC
- docker
- docker-compose
- docker
- docker-compose
- Go
- bash
- Add images
- press the + button or drag images into the home page
- prompt appears which asks how the images should be processed (selections are stored as defaults for later additions)
- begin processing (multithreaded => start new service instances)
- resize image whilst keeping the aspect ratio so that width is 1080px (maximum instagram width)
- read location from image data => if exists ? save to DB : skip location data
- losslessly compress images using squoosh
- if AI crop is active
- determine motif using motif service and save bbox to DB
- if defined crop ratio is fittable with motif ? auto-crop and save crop to DB : mark image as input needed
- else
- mark image as input is needed
- ai generate image caption and save to DB as alttext
- if ai hashtag is active ? generate ai caption with hashtags and save to db : mark image as input needed
- MVP: User can press show JSON button to receive a JSON overview of all the details relating to an image when it is done processing