Simple images serving service,
Project description
ImageButler
Simple image server built on Flask.
Developed Python version: Python 3.6.
Installation
Using pip
pip install ImageButler
Configuration & Environment Variables
Create image_butler.conf referring following example:
SQLALCHEMY_DATABASE_URI = 'sqlite:////<path-to-your>/ImageButler.db'
SERVER_NAME = 'image.local-domain:5000'
REDISLITE_PATH = '<path-to-your>/ImageButler.rdb'
REDISLITE_WORKER_PID = '<path-to-your>/workers.pid'
IMAGEBUTLER_MAX_THUMBNAIL = 150, 150
IMAGEBUTLER_API_IMAGES_LIMIT = 5
IMAGEBUTLER_MAX_IMAGE_SIZE = '1M'
Export environment variables:
export FLASK_APP=imagebutler
export IMAGEBUTLER_CONFIGS=path/to/your/image_butler.conf
For others configuration please referring to documents of Flask, Flask-Login, Flask-SQLAlchemy… (please check requirements.txt).
Database Init
flask db init
flask db migrate
flask db upgrade
Note: - For MySQL and MariaDB please don’t create your database in utf8_bin collate since it will break the application. - Also for MySQL and MariaDB, after run the migrate command, go and edit your migrations/versions/<some-hex>_.py
from sqlalchemy.dialects.mysql import LONGBLOB
# ...
# ... replace the old fileContent line with
sa.Column('fileContent', LONGBLOB(), nullable=False),
# ...
Run
flask run
User management
flask user create your@email.address
flask user get your@email.address
flask user change_pass your@email.address
Upload image
For example we use cURL to upload the image.
curl -X PUT \
http://image.local-domain:5000/api/v0/image \
-H 'content-type: multipart/form-data' \
-F 'file=@/path/to/your/image.png;type=image/png' \
-F username=1a339c02-404a-4b66-9fbb-cb30fb417c14 \
-F 'password=knwAAOfLBcnkWzGxo0G/ZUzq9ukLb+gf5H/1nmPr7BE+im03qZarW4TvwVepYmi/cg9dEw+N4HDfLqQRfXBSdNawy7YkOQgwOYiRRq3t2PSjYd+Pme4SrMWUE1BYW5rt' \
-F 'description=Image #1'
We got the result:
{
"return": {
"success": {
"file_name": "ca4ffe9f192f4f358e4981ceaafd8068.jpg",
"path": "/serve/image/1/ca4ffe9f192f4f358e4981ceaafd8068.jpg",
"thumbnail": "/serve/thumbnail/1/ca4ffe9f192f4f358e4981ceaafd8068.jpg",
"description": "Dog's Image"
}
}
}
You can go to http://image.local-domain:5000/serve/image/1/ca4ffe9f192f4f358e4981ceaafd8068.jpg to see your image.
Update your image’s description
curl -X POST \
http://image.local-domain:5000/api/v0/image \
-H 'content-type: application/json' \
-d '{
"username": "1a339c02-404a-4b66-9fbb-cb30fb417c14",
"password": "knwAAOfLBcnkWzGxo0G/ZUzq9ukLb+gf5H/1nmPr7BE+im03qZarW4TvwVepYmi/cg9dEw+N4HDfLqQRfXBSdNawy7YkOQgwOYiRRq3t2PSjYd+Pme4SrMWUE1BYW5rt",
"filename": "ca4ffe9f192f4f358e4981ceaafd8068.jpg",
"description": "Cat's image"
}'
Then we got the similar result of create new image:
{
"return": {
"success": {
"file_name": "ca4ffe9f192f4f358e4981ceaafd8068.jpg",
"path": "/serve/image/1/ca4ffe9f192f4f358e4981ceaafd8068.jpg",
"thumbnail": "/serve/thumbnail/1/ca4ffe9f192f4f358e4981ceaafd8068.jpg",
"description": "Cat's Image"
}
}
}
Delete an image
curl -X DELETE \
http://image.local-domain:5000/api/v0/image \
-H 'content-type: application/json' \
-d '{
"username": "1a339c02-404a-4b66-9fbb-cb30fb417c14",
"password": "knwAAOfLBcnkWzGxo0G/ZUzq9ukLb+gf5H/1nmPr7BE+im03qZarW4TvwVepYmi/cg9dEw+N4HDfLqQRfXBSdNawy7YkOQgwOYiRRq3t2PSjYd+Pme4SrMWUE1BYW5rt",
"filename": "ca4ffe9f192f4f358e4981ceaafd8068.jpg",
}'
Get your images
curl -X POST \
http://image.local-domain:5000/api/v0/images \
-H 'content-type: application/json' \
-d {
"username": "1a339c02-404a-4b66-9fbb-cb30fb417c14",
"password": "knwAAOfLBcnkWzGxo0G/ZUzq9ukLb+gf5H/1nmPr7BE+im03qZarW4TvwVepYmi/cg9dEw+N4HDfLqQRfXBSdNawy7YkOQgwOYiRRq3t2PSjYd+Pme4SrMWUE1BYW5rt",
"page": 1
}
History
0.0.4 (Dec 13th, 2017)
Hot fix #26 and #28
Added option to config max image file size
0.0.3 (Dec 10th, 2017)
Integrating with tox and travis
Add unit tests for imagebutler.utils module
API for add, modify, delete image
API for listing all the user’s images
Add thumbnail column to Image table
0.0.2 (Nov 13th, 2017)
Support for problem with MySQL/MariaDB and utf8_bin collation
Update API for adding image description
Update document
Add Flask-Cors
Include init.d script for Debian
0.0.1 (Nov 11th, 2017)
0.0.1b1: Update document to display in pypi
0.0.1b0: Include document to the package
Create, select, update user via command
REST API to upload files
Serving image via URLs
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ImageButler-0.0.4.tar.gz
.
File metadata
- Download URL: ImageButler-0.0.4.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0c98c678893ba78cae05cd16a55ae9b5b4ba0859d646d18b201f3d00908dfa3 |
|
MD5 | 3b585b7f505b007489981ca3e3686af3 |
|
BLAKE2b-256 | 29c79e4702ae7dc62f19bf25f4d61b5783b22f54bc4efec86fd4ff54e4d21984 |
File details
Details for the file ImageButler-0.0.4-py3-none-any.whl
.
File metadata
- Download URL: ImageButler-0.0.4-py3-none-any.whl
- Upload date:
- Size: 19.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4bd7d32cf779c33bf061e738cc545b3d45f2bd6810c9fd74ea18cae376e02de |
|
MD5 | a2b009f53c5fd291338c8e1e60d5bb15 |
|
BLAKE2b-256 | b90afd2512674e29f1cf2436bbf8a43a512bae04cced126c6e43067f2a2dee0d |