一种基于应用程序用户创建的对象生成精灵的方法。
django-dynamic-sprites的Python项目详细描述
为python和django创建sprites dynamicly。
0.1.3版
安装
通过pip:
安装包pip install django-dynamic-sprites
为文件夹中的图像生成精灵
一种生成精灵的方法是从文件夹中的所有图片生成精灵。为此,请键入以下命令:
generate_sprites.py path/to/folder path/to/output
需要注意的一点是,您没有传递输出扩展名。脚本已经用.png生成图像,用.css生成css。
从python代码生成sprite
在python代码中,可以为给定的图像集生成精灵。您只需提供图像路径,每个图像的名称,生成精灵并保存它:
from dynamic_sprites.sprite import Sprite images = ( ('brazil', '/path/to/brazil/image.png'), ('usa', '/path/to/usa/image.png'), ) sprite = Sprite('sprite_name', images) output_image = sprite.generate() output_image.save('/path/to/output/image.png') output_css = sprite.generate_css('http://images.com/output/image.png') output_css.save('/path/to/output/style.css')
这是从python代码生成sprite的基础。但也有一些抽象概念将其与django集成在一起。即使项目名上有django,也可以不使用django生成sprite。
为django queryset对象生成精灵
假设你有这样一个django模型:
from django.db import models class Country(models.Model): name = models.CharField(max_length=255) slug = models.SlugField() flag = models.ImageField(upload_to='countries')
你想要一个插满国旗的雪碧。您可以使用Sprite专门化生成它:
from dynamic_sprites.model_sprite import ModelSprite sprite = ModelSprite('country-flags', queryset=Country.objects.all(), image_field='flag', slug_field='slug') output_image = sprite.generate() output_image.save('/path/to/output/image.png') output_css = sprite.generate_css('http://images.com/output/image.png') output_css.save('/path/to/output/style.css')
您还可以将精灵生成连接到保存后侦听器,并在每次保存QuerySet中的对象时重新生成精灵:
from django.db.models.signals import post_save from dynamic_sprites.listeners import ModelSpriteListener listener = ModelSpriteListener('country-flags', image_field='flag', slug_field='slug', queryset=Country.objects.all()) post_save.connect(listener, sender=Country)
为项目做出贡献
这个项目是开源的,欢迎大家的贡献。