图像转换WSGI中间件
项目描述
此软件包提供了一种WSGI中间件组件,它可以自动根据<img>标签中的宽度和高度属性缩放图像。
要配置中间件,传递一个字符串作为secret;这可以是系统内部的任何字符串。
您还可以设置filter来选择缩放过滤器。可用的过滤器有nearest、bilinear、bicubic和antialias。默认为antialias。
如果您想更改JPEG图像的压缩级别,可以将quality选项设置为介于1(最差)和95(最佳)之间的值。默认值为80。
默认情况下,所有图像URL都会被重写。使用limit_to_application_url可以限制重写到相对URL和应用程序URL以下的绝对URL。
使用cache参数可以提供一个最小的缓存实现。它应该是保存生成的图像的目录路径。这是一个非常简单的做法,完全不使用任何可能相关的HTTP头,如Last-Modified、Expires等。刷新或清空缓存的唯一方法是删除文件。此功能默认禁用。
用法
中间件在两个阶段操作,分别是在HTML文档和图像上。
在处理HTML文档时,它会查找文档汤中的图像标签
<img src="some_image.png" width="640" height="480" />
如果找到这样的图像元素,它会将URL重写以包含缩放信息,中间件将在通过它提供图像时读取这些信息。
图像将按比例缩放,以适应给定的大小。如果您只设置了宽度和高度中的一个,则图像将仅限于该尺寸,但仍然按比例缩放。
这意味着应用程序开发者无需担心图像缩放;只需将所需大小放入HTML文档中即可。
请注意,此中间件通过使用SHA摘要签名对所有URL进行签名来防止DoS攻击(这对于任何进行大量处理的中间件都很重要)。
贡献
repoze.bitblt的开发发生在github上:https://github.com/repoze/repoze.bitblt
鸣谢
Malthe Borch <mborch@gmail.com>
Stefan Eletzhofer <stefan.eletzhofer@inquant.de>
Jeroen Vloothuis <jeroen.vloothuis@xs4all.nl>
Florian Schulze <florian.schulze@gmx.net>
变更日志
0.9(发布于2012-10-18)
维护图像中的嵌入式ICC配置文件。需要PIL 1.1.7或更高版本。
添加简单的缓存实现。[damien]
从readme中删除提及try_xhtml选项的段落。现在它是一个无操作。[jinty]
直接使用PATH_INFO以避免在非UTF-8路径上爆炸。
0.8(发布于2010-03-01)
0.8版本中的主要变化是将<img>标签的搜索和替换重写为使用正则表达式,而不是lxml。证明很难防止lxml以糟糕的方式破坏低质量HTML。新的基于正则表达式的搜索/替换非常小心,只修改必要的部分。
此更改的副作用是减少了依赖项,并且在理论上具有更好的性能。
与未关闭的<img>标签(HTML4)一起工作。[jinty]
将rewrite_image_tags重写为使用正则表达式查找/修改img标签。除了去除对lxml的依赖之外,这还防止了lxml更改HTML源而导致的一类错误,请参阅http://bugs.repoze.org/issue103。通过保留try_xhtml参数以保持与‘ImageTransformationMiddleware’类的向后兼容性。现在它是一个无操作。[jinty]
确保调整大小时保留GIF透明度。http://bugs.repoze.org/issue115 [jinty]
修复了<![CDATA[转义部分会被引号括起来,而CDATA被剥离的bug。这会导致引用JavaScript时出现混乱。[jinty]
正确重写具有像素属性(例如height="100px")的<img>标签,之前生成的url丢失了正则表达式,导致图像损坏。[jinty]
不要重写使用百分比尺寸的
标签,只有浏览器知道图片应该有多大。请参阅 http://www.w3.org/TR/html4/types.html#h-6.6。 [jinty]
在所有地方使用 unicode_body 以确保正确的编码。 [jinty]
修复了绝对URL(没有FQDN)的起始斜杠被错误删除的bug。 [damien]
修复了质量参数没有被强制转换为整数,这是PIL所要求的。 [damien]
兼容Python 2.4。 [malthe]
0.7(发布于2009年3月18日)
不要使用python 2.6语法。 [seletz]
处理空的内容主体,这可能会在重定向时发生。 [fschulze]
增加了对xhtml的支持,允许包含命名空间标签。 [fschulze]
增加了将URL重写限制在应用程序URL以下的选项。 [fschulze]
增加了缩放过滤器支持。 [fschulze]
支持只设置宽度或高度属性之一的图像标签。 [fschulze]
修复了对于未转换图像的响应中的UnboundLocalError。 [fschulze]
修复了导入PIL的问题。旧方法假设损坏的egg安装。 [fschulze]
使测试运行。 [fschulze]
0.6(发布于2008年10月11日)
配置中间件安全时必须传入一个 secret 参数。 [malthe]
0.5(发布于2008年10月11日)
重写的URL现在由中间件签名,以确保只有中间件可以构建bitblt请求。这是为了防止DoS攻击。 [malthe]
0.4(发布于2008年10月11日)
修复了路径处理。 [malthe]
添加了HTML文档处理,它扫描文档以查找图像标签,并将图像 src 属性重写为包含“bitblt”遍历指令。这使得它作为一个实际的中间件工作,因为应用程序语义没有改变。 [malthe]
不再接受查询参数,而是要求遍历指令“/bitblt-<width>x<height>”。 [malthe]
移除了MIME类型转换的功能。 [malthe]
0.3(发布于2008年10月10日)
使逻辑对意外参数具有鲁棒性。 [malthe]
修复了参数会被从WSGI环境中提取的bug。 [malthe]
添加了MIME类型转换。 [malthe]
0.2(发布于2008年10月8日)
修复了入口点名称。 [malthe]
0.1(发布于2008年10月3日)
初始发布。
项目详情
repoze.bitblt-0.9.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6b431dce2f734987b4e526289fa6bcb9d33dc588df17c11d625834ea63342c52 |
|
MD5 | db6c1cd61871c46a7f15bcffeece4305 |
|
BLAKE2b-256 | 5d2d97923d327f63b67d3be3e90670a10da74393c4f5bc837cb802a247c06501 |