Skip to content

netlogix/nximageoptimizer

Repository files navigation

TYPO3 Extension nximageoptimizer

TYPO3 V12 Minimum PHP Version GitHub CI status

This TYPO3 extension optimizes images (jpg, png, gif, svg) for web presentation when they are published. It will generate WebP versions of each rendered image and serve them to the client.

Compatibility

The current version (dev-master) of this extension has been tested in TYPO3 12 on PHP 8.1, 8.2 and 8.3.

Requirements

This extension requires additional third-party tools.

  • jpegoptim: utility to optimize/compress JPEG files
  • optipng: OptiPNG is a PNG optimizer that recompresses image files to a smaller size, without losing any information
  • pngquant: pngquant is a command-line utility and a library for lossy compression of PNG images
  • svgo: Node.js tool for optimizing SVG files
  • gifsicle: Create, manipulate, and optimize GIF images and animations

You should install them using your package manager of choice.

Ubuntu Example

The following is an example installation on Ubuntu:

sudo apt-get install jpegoptim optipng pngquant gifsicle
sudo npm install -g svgo

macOS Example (using Homebrew)

brew install jpegoptim
brew install optipng
brew install pngquant
brew install svgo
brew install gifsicle

macOS Example (using MacPorts)

port install jpegoptim
port install optipng
port install pngquant
port install svgo
port install gifsicle

Installation

Install the package via composer.

composer require netlogix/nximageoptimizer

Place the following in your .htaccess file and images will be replaced with WebP version.

	# Check if browser support WebP images
	# Check if WebP replacement image exists
	# Serve WebP image instead
	RewriteCond %{HTTP_ACCEPT} image/webp
	RewriteCond %{DOCUMENT_ROOT}/$0.webp -f
	RewriteRule (.+)\.(jpe?g|png)$ $0.webp [T=image/webp,E=accept:1]

Tell every caching proxy to cache based on "accept" header

	RewriteRule (.+)\.(jpe?g|png|webp)$ - [env=POTENTIAL_WEBP_IMAGE:1]
	Header merge vary accept env=POTENTIAL_WEBP_IMAGE

Troubleshooting

The Ubuntu source package for imagemagick does not declare a build dependency on libwebp-dev. Thus imagemagick gets built without webp support. To fix this install the webp package.

sudo apt-get install webp