.. |release| image:: https://img.shields.io/github/v/release/netresearch/t3x-nr-image-optimize?sort=semver :target: https://github.com/netresearch/t3x-nr-image-optimize/releases/latest .. |license| image:: https://img.shields.io/github/license/netresearch/t3x-nr-image-optimize :target: https://github.com/netresearch/t3x-nr-image-optimize/blob/main/LICENSE .. |ci| image:: https://github.com/netresearch/t3x-nr-image-optimize/actions/workflows/ci.yml/badge.svg .. |php| image:: https://img.shields.io/badge/PHP-8.2%20|%208.3%20|%208.4-blue.svg .. |typo3| image:: https://img.shields.io/badge/TYPO3-13.4-orange.svg |php| |typo3| |license| |ci| |release| .. _nr_image_optimize: ===================================== ๐Ÿš€ TYPO3 Extension: nr_image_optimize ===================================== The ``nr_image_optimize`` extension is an advanced TYPO3 extension for image optimization. It provides lazy image processing, modern formats, responsive images, and performance optimizations. ๐ŸŽจ Features ============ - ๐Ÿš€ **Lazy Image Processing**: Images are processed only when requested. - ๐ŸŽจ **Modern Format Support**: WebP and AVIF with automatic fallback. - ๐Ÿ“ฑ **Responsive Images**: Built-in ViewHelper for srcset generation. - โšก **Performance Optimized**: Middleware-based processing for efficiency. - ๐Ÿ”ง **Intervention Image**: Powered by the Intervention Image library. - ๐Ÿ“Š **Core Web Vitals**: Improves LCP and overall page performance. ๐Ÿ› ๏ธ Requirements ================ - PHP 8.2, 8.3, or 8.4 - TYPO3 13.4 - Intervention Image library (installed via Composer automatically) ๐Ÿ“Œ Recommended Extensions ======================== - `https://github.com/christophlehmann/imageoptimizer` ๐Ÿ’พ Installation ================ Via Composer (recommended) ------------------------ .. code-block:: bash composer require netresearch/nr-image-optimize Manual Installation ------------------ 1. Download the extension from the TYPO3 Extension Repository 2. Upload to ``typo3conf/ext/`` 3. Activate the extension in the Extension Manager โš™๏ธ Configuration ================ The extension works out of the box with sensible defaults. Images are automatically optimized when accessed via the ``/processed/`` path. ViewHelper Usage ---------------- .. code-block:: html {namespace nr=Netresearch\NrImageOptimize\ViewHelpers} Supported Parameters --------------------- - ``file``: Image file resource - ``width``: Target width in pixels - ``height``: Target height in pixels - ``quality``: JPEG/WebP quality (1-100) - ``sizes``: Responsive sizes attribute - ``format``: Output format (auto, webp, avif, jpg, png) ๐Ÿ“ Source Set Configuration --------------------------- Different source sets can be defined for each media breakpoint via the ``set`` attribute: .. code-block:: html ๐Ÿ–ผ๏ธ Render Modes ---------------- Two render modes are available for the ``SourceSetViewHelper``: - **cover**: Default mode, resizes images to fully cover the provided width and height. - **fit**: Resizes images so they fit within the provided width and height. .. code-block:: html ๐Ÿงช Development & Testing ======================== Unit tests ensure functionality and code quality. .. code-block:: bash # Run all tests composer ci:test # Run specific tests composer ci:test:php:cgl # Code style composer ci:test:php:lint # PHP syntax composer ci:test:php:phpstan # Static analysis composer ci:test:php:unit # PHPUnit tests composer ci:test:php:rector # Code quality ๐Ÿ—๏ธ Architecture ================ The extension uses a middleware approach for image processing: 1. **ProcessingMiddleware**: Intercepts requests to ``/processed/`` paths 2. **Processor**: Handles image optimization and format conversion 3. **SourceSetViewHelper**: Generates responsive image markup โšก Performance Considerations ============================= - Images are processed only once and cached - Supports native browser lazy loading - Automatic format negotiation based on Accept headers - Optimized for CDN delivery ๐Ÿ“„ License =========== GPL-3.0-or-later. See `LICENSE file `_ for details. ๐Ÿ†˜ Support ========== For issues and feature requests, please use the `GitHub issue tracker `_. ๐Ÿ™ Credits =========== Developed by `Netresearch DTT GmbH `_