muto is a client/server system for cloud-based image manipulation in Django projects. It uses easy-thumbnails for the manipulation part and boto for accessing and storing images on S3.
This is the client part. The server package is called muto-server.
You can install the package from PyPI using pip or easy_install:
$ pip install muto-client
Or you can install from the latest source version:
$ git clone git://github.com/philippbosch/muto-client.git
$ cd muto-client/
$ python setup.py install
Add muto
to your INSTALLED_APPS
in settings.py:
INSTALLED_APPS = (
# ...
'muto',
)
Create the database tables:
If you use South:
$ python manage.py migrate muto
Otherwise:
$ python manage.py syncdb
There are a few configuration settings you can set in your settings.py:
MUTO_REDIS_URL
– The URL to your muto-server's Redis instance (defaults toredis://:6379
)MUTO_AWS_STORAGE_BUCKET_NAME
- The S3 bucket used to store and retrieve images (falls back toAWS_STORAGE_BUCKET_NAME
if not defined)MUTO_AWS_ACCESS_KEY_ID
andMUTO_AWS_SECRET_ACCESS_KEY
– Your S3 credentials used to upload to S3 (fall back toAWS_ACCESS_KEY_ID
orAWS_SECRET_ACCESS_KEY
respectively if not defined)
Use MutoField
in your models (in models.py):
from django.db import models
from muto import transformer
from muto.fields import MutoField
class MyModel(models.Model):
image = MutoField()
Register your model with the muto transformer (also in models.py):
transformer.register(MyModel, 'image')
You should see a new section called Muto in your Django Admin. There you can create image version definitions. The options value should be a JSON-serialized kwargs dict that will be handed over to easy-thumbnails. An example:
{
"size": [640,480],
"quality": 65,
"bw": true
}
Now every time you create a new MyModel
instance or change one, the muto
server will create image versions of the corresponding image and upload them to
S3.