跳转到主要内容

WSGI中间件用于图片缩放

项目描述

用途

cykooz.thumbs 实现了用于修改应用程序发送的图片的WSGI中间件。

中间件构造函数

cykooz.thumbs.middleware.Thumbs(application, cache_dir, sizes, **kwargs)

参数

application

被中间件包装的应用程序

cache_dir

图片缓存存储的文件夹路径

sizes

包含允许图片尺寸参数的字典

sizes参数的示例值

{
    'small': {'size': (100, 100), 'scale_method': 'crop', 'quality': 80},
    'preview': {'size': (800, 600)},
    'png_thumb': {'size': (50, 50), 'scale_method': 'crop', 'quality': 'png'}
}

其中

size

要将图片缩放到的大小。如果一个尺寸为零,则使用原始图片的相应尺寸。

scale_method

缩放模式(默认为‘fit_stretch’

‘crop’

裁剪图片到指定比例,并填充到指定大小;

‘stretch’

拉伸图片到指定大小;

‘squash’

与‘stretch’相同,但如果图片的两个尺寸都小于所需尺寸,则返回原始图片;

‘fit_stretch’

将图片填充到指定大小,同时保持原始比例;

‘fit_squash’

与‘fit_stretch’相同,但如果图片的两个尺寸都小于所需尺寸,则返回原始图片。

quality

如果指定为‘png’,则将图片压缩为PNG。默认为75。

Paste 的配置示例

[filter:thumbs]
use = egg:cykooz.thumbs
cache_dir = %(here)s/images_cache
sizes =
    small = 100x100,crop,q80
    preview = 800x600
    png_thumb = 50x50,crop,qpng

WSGI 应用程序

该包包含一个简单的应用程序,该应用程序被中间件包装。该应用程序简单地返回由参数 image_dir 指定的文件夹中的文件。

Paste 应用程序的配置示例

[app:main]
use = egg:cykooz.thumbs
image_dir = %(here)s/images
cache_dir = %(here)s/images_cache
sizes =
    small = 100x100,crop,q80
    preview = 800x600
    png_thumb = 50x50,crop,qpng

启动应用程序

项目附带了 Buildout 的配置以启动应用程序和 PasteDeploy 的配置示例。Buildout 配置

  • 创建 ./bin/paster 脚本

  • 编译 WSGI 服务器 uWSGI

  • 创建 ./bin/wsgi-script 脚本,用于通过 mod_wsgi 或 uWSGI 启动应用程序

启动应用程序的示例命令(uWSGI)

user@user-pc:~/cykooz.thumbs$ ./bin/uwsgi --ini ./etc/thumbs_example.ini

在浏览器中获取缩放后的图片

例如,您可以通过以下方式在浏览器中获取缩放后的图片

http://www.site.ru/images/big_images.jpg?view=small
http://www.site.ru/images/big_images.jpg?view=preview

清除浏览器缓存

要清除图片缓存,只需加载一个被中间件捕获的特殊参数的地址即可

http://www.site.ru/images/big_images.jpg?view=__clear_cache__
или
http://www.site.ru/?view=__clear_cache__

更改日志

版本 0.3.1

  • 修复了通过 ‘crop’ 方法将小图片缩放到大尺寸时的缩放问题。

版本 0.3

  • 更改了将参数传递给中间件的方式

  • 重命名了缩放方法

    'scale_fit' => 'fit_stretch'
    'scale_stretch' => 'stretch'
  • 添加了新的缩放方法 ‘squash’‘fit_squash’

版本 0.2

  • 添加了 crop 参数

  • 添加了 scale_fit 和 scale_stretch 参数

  • 添加了用于指定 JPEG 压缩质量或保存为 PNG 的参数

  • 添加了一个简单的 WSGI 应用程序,它从指定的目录返回文件,并由处理图像的中间件包装。

  • Buildout 现在安装 wsgi 服务器 uWSGI 并创建 wsgi-script 以启动应用程序

  • 添加了 Paste 和 uWSGI 应用程序的配置示例

版本 0.1

  • 初始发布

由以下支持