跳转到主要内容

图像转换WSGI中间件

项目描述

此软件包提供了一种WSGI中间件组件,它可以自动根据<img>标签中的宽度和高度属性缩放图像。

要配置中间件,传递一个字符串作为secret;这可以是系统内部的任何字符串。

您还可以设置filter来选择缩放过滤器。可用的过滤器有nearestbilinearbicubicantialias。默认为antialias

如果您想更改JPEG图像的压缩级别,可以将quality选项设置为介于1(最差)和95(最佳)之间的值。默认值为80。

默认情况下,所有图像URL都会被重写。使用limit_to_application_url可以限制重写到相对URL和应用程序URL以下的绝对URL。

使用cache参数可以提供一个最小的缓存实现。它应该是保存生成的图像的目录路径。这是一个非常简单的做法,完全不使用任何可能相关的HTTP头,如Last-ModifiedExpires等。刷新或清空缓存的唯一方法是删除文件。此功能默认禁用。

用法

中间件在两个阶段操作,分别是在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

鸣谢

变更日志

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 (22.7 kB 查看哈希)

上传时间

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面