A Python Library to Generate Dynamic Share Images. Powered by Cloudinary.
Project description
ShareImage
A Python Library to Generate Dynamic Share Images. Powered by Cloudinary.
Installation
Windows
pip install ShareImage
Linux / macOS
python3 -m pip install ShareImage
Usage
ShareImage Can be easily integrated in any Python Project.
For example, in Flask:
from flask import Flask, render_template
from ShareImage import ShareImage
app = Flask(__name__)
@app.route('/')
def index():
image = ShareImage(
title="Home",
cloudName="CLOUDINARY_CLOUD_NAME",
imagePublicId="CLOUDINARY_IMAGE_ID"
)
return render_template('index.html', image=image)
@app.route('/posts/<string:slug>')
def posts(slug):
image = ShareImage(
title=bySlug.get(slug)['title'],
cloudName="CLOUDINARY_CLOUD_NAME",
imagePublicId="CLOUDINARY_IMAGE_ID"
)
return render_template('index.html', image=image)
if __name__=="__main__":
app.run()
Now, you can use the image
variable in any img
Tag or og:image
/twitter:image
/image
Meta Tags!
Note: CLOUDINARY_CLOUD_NAME
and CLOUDINARY_IMAGE_ID
are respectedly Your Cloudinary Cloud Name and Image Public Id (Including Folder Name) & the bySlug
is a Special Variable to find specific posts in a Array of Dictionaries by Slug and it can be achieved by the following Code:
def build_dict(seq, key):
return dict((d[key], dict(d, index=index)) for (index, d) in enumerate(seq))
bySlug = build_dict(ARRAY_OF_POSTS, key="KEY_OF_SLUG")
# Usage: bySlug(SLUG_OF_POST)['KEY_TO_FIND']
Utilites
By default ShareImage provides two useful Utility Functions.
Clean Text (clean_text
)
It Cleanes a Text String and makes it URI-Compatible. Note: It uses Double-Escape for most Special Charecters to use it with Cloudinary. Example:
from ShareImage import clean_text
title = "A Test String"
print(clean_text(title)) # Will return A%2520Test%2520String
Join Tags (join_tags
)
It Joins a Array of Tags to with #
to use it as the tagline of ShareImage.
Example:
from ShareImage import ShareImage, join_tags
tags = [
'Python',
'Cloudinary'
]
image = ShareImage(
cloudName="zype",
imagePublicId="blog/Post-Image",
title='A Python Library to Generate Dynamic Share Images',
tagline=join_tags(tags),
taglineFont="futura"
)
Parameters
Required Parameters
Parameter | Type | Description |
---|---|---|
title |
String | Title of Text |
cloudName |
String | Name of your Cloudinary Cloud |
imagePublicId |
String | Public Id of Your Image including Folder Name |
Optional Parameters
Parameter | Type | Default | Description |
---|---|---|---|
tagline |
String | None | Tagline of Website or Tags of Post |
titleFont |
String | futura | Font of Title |
titleExtraConfig |
String | '' |
Extra Title Config |
taglineExtraConfig |
String | '' |
Extra Config of Tagline |
cloudinaryUrlBase |
String | https://res.cloudinary.com | URL Base of Cloudinary |
taglineFont |
String | arial | Font of Tagline |
imageWidth |
Integer | 1280 | Width of Image |
imageHeight |
Integer | 669 | Height of Image |
textAreaWidth |
Integer | 760 | Width of TextArea |
textLeftOffset |
Integer | 480 | Left Offset of Text |
titleGravity |
String | south_west |
Gravity of Title |
taglineGravity |
String | north_west |
Gravity of Tagline |
titleLeftOffset |
Integer | None | Left Offset of Title |
taglineLeftOffset |
Integer | None | Left Offset of Tagline |
titleBottomOffset |
Integer | 254 | Bottom Offset of Title |
taglineTopOffset |
Integer | 445 | Top Offset of Tagline |
textColor |
String | 000000 |
Color of Text |
titleColor |
String | None | Color of Title (If not provided textColor will be used instead |
taglineColor |
String | None | Color of Tagline (If not provided textColor will be used instead |
titleFontSize |
Integer | 64 | Font Size of Title |
taglineFontSize |
Integer | 48 | Font Size of Tagline |
Note: If you don't provide Tagline, Parameters with tagline Prefix will be ignored. |
|||
We may add more Customization to ShareImage in the Future. |
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.