typisttech/image-optimize-command

使用 WP CLI 轻松优化图像

资助包维护!
typist.tech/donation

安装次数: 1,996

依赖项: 0

建议者: 0

安全: 0

星标: 168

关注者: 7

分支: 18

开放性问题: 14

类型:wp-cli-package


README

Image Optimize Command

Packagist Packagist PHP from Packagist CircleCI Codecov license Twitter Follow @TangRufus Hire Typist Tech

使用 WP CLI 轻松优化图像

Typist Tech 倾情打造

Image Optimize Command 是一个开源项目,完全免费使用。

然而,维护和开发新功能所需的大量工作在没有适当的财务支持下是无法持续的。如果您有能力,请考虑通过以下链接进行捐赠

GitHub via Sponsor Sponsor via PayPal More Sponsorship Information

Image Optimize Commandspatie/image-optimizer 的 WP CLI 包装器,通过运行一系列各种图像 优化工具 来优化 gifjpegjpgpngsvgwebp 图像。请阅读 关于为什么我构建它的介绍博客文章

用法

# optimize specific attachments
$ wp image-optimize attachment 123 223 323

# optimize certain number of attachments
$ wp image-optimize batch --limit=20

# restore the full sized images of specific attachments
$ wp image-optimize restore 123 223 323
$ wp media regenerate 123 223 323

# restore all full sized images and drop all meta flags
$ wp image-optimize reset
$ wp media regenerate

# Find and optimize images under a given directory **without backup**
$ wp image-optimize find /path/to/my/directory --extensions=gif,jpeg,jpg,png,svg,webp

# shortcusts for `wp image-optimize find` **without backup**
$ wp image-optimize mu-plugins
$ wp image-optimize plugins
$ wp image-optimize themes
$ wp image-optimize wp-admin
$ wp image-optimize wp-includes

# learn more
$ wp help image-optimize
$ wp help image-optimize <subcommand>

Typist Tech 准备为您构建下一个令人惊叹的 WordPress 网站。 聘请我们!

要求

  • PHP v7.2 或更高版本
  • WP-CLI v2.3.0 或更高版本

由于 wp-cli/wp-cli-bundle 打包了一个较旧的 symfony/process 版本,与 spatie/image-optimizer 不兼容,因此必须通过 composer 安装 WP-CLI。

安装

$ wp package install typisttech/image-optimize-command:@stable

优化工具

在内部,image-optimize-command 调用 spatie/image-optimizer,它需要安装以下二进制文件

请参阅 spatie/image-optimizer 的“readme”文件以获取 安装说明

SVGO 和 cwebp 是可选的

请注意,WordPress 默认不支持 svg 文件。您可以选择省略 SVGO。但是,如果您启用了 WordPress svg 支持 并将 svg 文件上传到 WordPress 媒体库,则必须安装 SVGO。否则,命令将失败。

同样,对于 cwebp 也适用。

用例

首次使用

此命令会优化全尺寸图像(您上传的图像)和缩略图(WordPress 会自动为您调整这些图像的大小)。

很可能是缩略图丢失或从未生成

  • 上传后更换了主题
  • 上传后激活了插件
  • 从磁盘删除了图像但未更新 WordPress 的数据库

最简单的解决方案是重新生成缩略图然后优化

$ wp media regenerate
$ wp image-optimize batch --limit=9999999

$ wp image-optimize mu-plugins
$ wp image-optimize plugins
$ wp image-optimize themes
$ wp image-optimize wp-admin
$ wp image-optimize wp-includes

在升级WordPress核心/插件/主题后

$ wp image-optimize mu-plugins
$ wp image-optimize plugins
$ wp image-optimize themes
$ wp image-optimize wp-admin
$ wp image-optimize wp-includes

恢复原始文件

此命令在优化附件之前备份完整尺寸的图片。如果您想恢复它们

# optimize
$ wp image-optimize attachment 123

# restore the full sized image
$ wp image-optimize restore 123
# regenerate the thumbnails from the original full sized image
$ wp media regenerate 123

从image-optimize-command v0.1.x迁移

从v0.2版本开始,此命令在优化附件之前备份完整尺寸的图片。要从image-optimize-command v0.1.x迁移

$ wp image-optimize reset
$ wp media regenerate
$ wp image-optimize batch --limit=9999999

常见问题解答

它执行了什么样的优化?

主要是应用压缩、删除元数据和将颜色数量减少到gifjpegjpgpngsvgwebp图片。该包足够智能,能够为正确图像选择正确的工具。

查看Freek Van der Herten的文章,解释spatie/image-optimizer合理的默认配置

如何自定义优化?

use Spatie\ImageOptimizer\OptimizerChain;

add_filter('TypistTech/ImageOptimizeCommand/OptimizerChain', function (OptimizerChain $optimizerChain): OptimizerChain {
    // Option A: Send messages to $optimizerChain.
    $optimizerChain->setTimeout($xxx);
    $optimizerChain->useLogger($yyy);
    $optimizerChain->addOptimizer($zzz);

    // Option B: Make a new $optimizerChain.
    // See: https://github.com/spatie/image-optimizer/blob/master/src/OptimizerChainFactory.php
    $optimizerChain = new OptimizerChain();
    $optimizerChain->addOptimizer($zzz);

    // Finally
    return $optimizerChain;
});

如何跳过备份/恢复?

⚠️ 优化是有损的如果您跳过了备份原始文件,将无法恢复原始文件。 请谨慎操作。

use TypistTech\ImageOptimizeCommand\Operations\AttachmentImages\Backup;
use TypistTech\ImageOptimizeCommand\Operations\AttachmentImages\Restore;

add_filter('TypistTech/ImageOptimizeCommand/Operations/AttachmentImages/Backup', function (): Backup {
    // TODO: You have to implement a null backup class.
    return $myNullBackupObject;
});

add_filter('TypistTech/ImageOptimizeCommand/Operations/AttachmentImages/Restore', function (): Restore {
    // TODO: You have to implement a null restore class.
    return $myNullRestoreObject;
});

最好将这两个空操作放在单独的包中。如果您已经实现了它,请在readme中提交拉取请求。

多次运行wp image-optimize attachment / batch会触发同一附件的多次优化吗?

不会。

默认情况下,布尔标志(元字段)会在优化后分配给附件。这是为了防止重新优化已优化的附件。如果您更改了图像文件(例如:调整大小/重新生成缩略图),您必须首先重置它们的元标志。

注意:find子命令及其快捷方式不会创建元标志。

优化后图片会看起来不同吗?

是的,有一点不同。这是有损优化。然而,除非您有这方面的专业知识,否则您不会注意到差异。

请参阅spatie/image-optimizerreadme以了解使用的二进制选项。

为什么我的GIF停止动画了?

当您使用媒体上传功能上传图像时,WordPress会自动以不同的尺寸创建该图像的几个副本...当为动画GIF创建新图像尺寸时,WordPress最终只保存GIF的第一帧...

--- wpbeginner

幸运的是,Lasse M. Tvedt在StackExchange上展示了如何停止WordPress调整GIF大小

我可以在托管主机上使用它吗?

不,您不能在诸如KinstaFlywheelWP Engine之类的托管主机上使用它,因为它们禁止安装二进制文件。

如果您必须在托管主机上使用它,请雇佣开发者添加SaaS提供商集成

我必须安装SVGOcwebp吗?

,如果您WordPress媒体库中没有SVG文件。

,如果您

同样,对于 cwebp 也适用。

PHP致命错误:允许的内存大小为999999字节已耗尽(尝试分配99字节)

这是一个常见的WP CLI问题。请参阅:[常见问题](https://make.wordpress.org/cli/handbook/common-issues/#php-fatal-error-allowed-memory-size-of-999999-bytes-exhausted-tried-to-allocate-99-bytes "https://bit.ly/wpclimem")

是否有限制或配额?

没有,与其它SaaS替代方案不同,这个包在您的服务器上运行,没有任何对文件大小或月度配额的限制。完全免费。

这是为所有人准备的吗?

不是,这需要代价。优化是CPU密集型的。在优化期间,CPU使用率可能飙升至100%。请安排在深夜分批运行。

在[这篇文章](https://typist.tech/articles/easily-optimize-wordpress-images-using-wp-cli-and-some-binaries/ "https://typist.tech/articles/easily-optimize-wordpress-images-using-wp-cli-and-some-binaries/")中了解更多。

您会添加对旧PHP版本的支持吗?

永远不会!此插件仅支持[活跃支持的PHP版本](https://secure.php.net/supported-versions.php "https://secure.php.net/supported-versions.php")。

不要在[已停用](https://secure.php.net/supported-versions.php "https://secure.php.net/supported-versions.php")或仅提供[安全修复](https://secure.php.net/supported-versions.php "https://secure.php.net/supported-versions.php")的PHP版本上使用它。

看起来很棒。我可以在哪里找到更多类似的好东西?

  • [Typist Tech博客上的文章](https://typist.tech "https://typist.tech")
  • wp.org上的[Tang Rufus的WordPress插件](https://profiles.wordpress.org/tangrufus#content-plugins "https://profiles.wordpress.org/tangrufus#content-plugins")
  • [Typist Tech的GitHub个人资料](https://github.com/TypistTech "https://github.com/TypistTech")上的更多项目
  • 关注[Typist Tech的通讯](https://typist.tech/go/newsletter "https://typist.tech/go/newsletter")
  • 关注[Tang Rufus的Twitter账号](https://twitter.com/TangRufus "https://twitter.com/TangRufus")
  • 雇佣[Tang Rufus](https://typist.tech/contact "https://typist.tech/contact")来构建您下一个令人惊叹的网站

我可以在哪里给出5星评价?

谢谢!很高兴你喜欢它。让人们知道有人在使用这个项目很重要。请考虑

  • 在[推文中提及](https://twitter.com/intent/tweet?text=Image%20Optimize%20Command%20-%20%40wpcli%20wrapper%20for%20%40spatie_be%20image%20optimizer&url=https://github.com/TypistTech/image-optimize-command&hashtags=webdev,wordpress&via=TangRufus&url=https://github.com/TypistTech/image-optimize-command&hashtags=webdev,wordpress&via=TangRufus "https://twitter.com/intent/tweet?text=Image%20Optimize%20Command%20-%20%40wpcli%20wrapper%20for%20%40spatie_be%20image%20optimizer&url=https://github.com/TypistTech/image-optimize-command&hashtags=webdev,wordpress&via=TangRufus") @TangRufus
  • 在[Github仓库中星级评价](https://github.com/TypistTech/image-optimize-command "https://github.com/TypistTech/image-optimize-command")
  • 在[Github仓库中关注](https://github.com/TypistTech/image-optimize-command/subscription "https://github.com/TypistTech/image-optimize-command/subscription")
  • 编写教程和博客文章
  • 雇佣[Typist Tech](https://www.typist.tech/contact/ "https://www.typist.tech/contact/")

测试

运行测试

$ composer test
$ composer style:check

反馈

请提供反馈!我们希望使这个项目尽可能有用。请提交一个问题并指出你喜不喜欢什么,或者fork项目并发送pull请求没有问题太小。

安全漏洞

如果您在此项目中发现安全漏洞,请通过image-optimize-command@typist.tech给我们发邮件。所有安全漏洞都将得到及时解决。

鸣谢

Image Optimize CommandTypist Tech的项目,由Tang Rufus维护,他是一名雇佣的自由职业开发者。

特别感谢 Freek Van der Herten,他的 spatie/image-optimizer 包使得这个项目成为可能。

贡献者完整列表可以在 这里 找到。

许可证

Image Optimize CommandMIT 许可证 下发布。