为web使用优化plone内容图像

collective.optimage的Python项目详细描述


Introduction

这个plone插件使用外部进程执行(无损)优化图像内容类型。

注意

此软件为alpha版本。在生产站点中使用此选项可能会影响性能。

仔细阅读文档

How it works

网站用户将继续正常加载图像内容,但加载的数据将从 用于执行的外部优化软件(必须位于服务器上) 图像无损转换

这样,最终的结果通常是一个较小的图像,由浏览器快速加载。

默认情况下,仅添加此插件是不够的。必须包含所有已安装的受支持软件 在您的服务器上(或限制它为您想要使用的内容)。

为此,请在构建配置中包含适当的zcml文件:

[instance]
...
    eggs =
        Plone
        ...
        collective.optimage

    zcml =
        ...
        collective.optimage:wantedoptimizator1.zcml
        collective.optimage:wantedoptimizator2.zcml
        ...

所有wantedoptimizatorx条目必须是下面支持的软件之一。 例如:

zcml =
    collective.optimage:jpegoptim.zcml
    collective.optimage:optipng.zcml

要包含它们(不包括pngout),只需包含“all.zcml”。

Supported software

现在,此产品支持以下命令行工具:

jpegoptim
用于jpeg优化-http://freecode.com/projects/jpegoptim
jpegtran
用于jpeg优化-http://jpegclub.org/jpegtran/
gifscicle
用于git优化-http://www.lcdf.org/gifsicle/
optipng
用于PNG优化-http://optipng.sourceforge.net/
pngcrush
用于PNG优化-http://pmt.sourceforge.net/pngcrush/
pngoutslow
用于PNG优化-http://advsys.net/ken/util/pngout.htm

Adding your own

如果您想为其他软件提供支持,可以在您自己的产品中使用zca。 您需要为IOptimageProvider interface提供一个命名适配器。

例如:

<adapter
        name="yournewsoftware"
    for="plone.app.blob.interfaces.IATBlobImage
         zope.publisher.interfaces.browser.IHTTPRequest"
    provides="collective.optimage.interfaces.IOptimageProvider"
    factory="yout.products.module.YourSoftwareAdapter"
    />

最后,适配器类将如下:

from zope.interface import implements
from collective.optimage.interfaces import IOptimageProvider

class YourSoftwareAdapter(object):
    """Optimize using yournewsoftware"""
    implements(IOptimageProvider)

    for_image = 'jpeg'

    def optimize(self):
        // do stuff, calling external process

请注意,必须使用插件填充for_image以提供要威胁的图像类型。

Tips and know issues

Command line tool position

现在这个产品将尝试运行上面给出的所有软件,只需调用它们。 如果运行zope进程的用户无法使用该程序,则可以手动指定 它是。 如果软件是手动安装的(例如:如果您手动下载 并将其安装在构建安装中,而不是系统范围内)。

为此,请提供名为“softwarename\u path”的环境变量。例如:

[instance]

...

environment-vars =
    ...
    JPEGOPTIM_PATH /opt/local/bin/jpegoptim

Content types

现在只支持plone图像内容类型。不幸的是消息项仍然没有使用 zope blob支持,因此不会获得任何优化。

Performance

外部进程执行的操作是同步的,因此阻塞zope线程。 当编辑器提供新图像时,这将降低站点性能 (或修改现存的)。

您可以让它们更快(但效率更低),使用配置选项。

On performance (again)

现在优化已经完成了,在图像加载到plone之后。事件在 图像源更改,然后将图像放到临时文件中,然后进行处理。 之后,再次加载优化的图像。

这也适用于所有缩放图像版本。

这是低效的,所以将来可能会改变,但这是我发现的唯一没有猴子补丁的方法 扑通一声。

Changelog

0.1.0(2012-06-30)

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Apache Flink外部Jar   创建和强制转换对象数组时发生java错误   Java,添加数组   具有相同包结构和类的java JAR   java Jenkins未能构建Maven项目   java为什么一个forloop比另一个更快,尽管它们做的“一样”?   servlets在将“/”站点迁移到Java EE包时处理contextpath引用   无法解析java MavReplugin:2.21或其某个依赖项   泛型如何编写比较器来泛化Java中的两种类型的对象?   java Android Emulator未在netbeans上加载   多线程Java使用线程对数组中的数字求和:在同步块中使用新变量作为锁:差异   java如何在JSP/servlet中设置<input>标记的值?