Download the PHP package 3brs/imgproxy-bundle without Composer
On this page you can find all versions of the php package 3brs/imgproxy-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download 3brs/imgproxy-bundle
More information about 3brs/imgproxy-bundle
Files in 3brs/imgproxy-bundle
Package imgproxy-bundle
Short Description Imgproxy integration for Liip Imagine Bundle - replaces image processing with imgproxy
License MIT
Informations about the package imgproxy-bundle
Imgproxy Bundle for Symfony
A Symfony bundle that integrates imgproxy with Liip Imagine Bundle, replacing on-the-fly image processing with imgproxy's powerful and performant image transformation service.
Features
- 🚀 Drop-in replacement for Liip Imagine Bundle - no template changes needed
- ⚡ High performance - leverage imgproxy's native Go implementation
- 🔒 Secure - URL signing support to prevent unauthorized image transformations
- 📦 S3/CDN ready - works seamlessly with cloud storage
- 🎨 Full filter support - supports 13/17 Liip Imagine filters (76% compatibility)
- 🔧 Static asset detection - automatically skips webpack builds and bundles
Requirements
- PHP 8.0, 8.1, 8.2, 8.3, or 8.4
- Symfony 5.4, 6.4, or 7.1
- Liip Imagine Bundle 2.x
- Running imgproxy server
Installation
Step 1: Install the bundle
Step 2: Register the bundle
Register the bundle in config/bundles.php:
Step 3: Configure imgproxy
Create config/packages/three_brs_imgproxy.yaml:
Step 4: Set environment variables
Step 5: Update Liip Imagine configuration
In config/packages/liip_imagine.yaml, change the cache resolver:
Step 6: Clear cache
Production deployment
See imgproxy documentation for Kubernetes, AWS ECS, or other deployment options.
Filter Compatibility
✅ Fully Supported (13/17 filters)
| Liip Imagine Filter | Imgproxy Equivalent | Notes |
|---|---|---|
thumbnail |
resize:fill or resize:fit |
Most commonly used |
resize |
resize:force + size |
Exact dimensions |
scale |
resize:fit + size |
Proportional scaling |
downscale |
resize:fit + enlarge:0 |
Never enlarges |
upscale |
resize:fit + enlarge:1 |
Always enlarges |
crop |
resize:fill + size |
Crop to dimensions |
rotate |
rotate |
Angle in degrees |
auto_rotate |
auto_rotate:1 |
EXIF-based rotation |
background |
background + extend |
Background color |
grayscale |
saturation:0 |
Grayscale effect |
watermark |
watermark |
Requires URL |
strip |
✓ | Automatic |
interlace |
✓ | Automatic |
⚠️ Partially Supported
relative_resize- May be imprecise (requires source dimensions)
❌ Not Supported
flip- No native imgproxy support (use CSStransform)paste- Complex compositing not supportedresample- DPI changes irrelevant for web
Usage
No changes to your templates are needed! All existing imagine_filter calls work automatically:
How It Works
Example Generated URLs:
Performance Benefits
Using imgproxy provides significant performance improvements:
- ⚡ Native Go Performance - Up to 10x faster than PHP-based image processing
- 🔄 On-the-fly Processing - No need to pre-generate image variations
- 💾 Reduced Storage - Store only original images, generate variants on demand
- 🌐 CDN Compatible - imgproxy URLs can be cached by CDN for global distribution
Static Assets
The bundle automatically detects and skips static assets (webpack builds, bundles):
/build/**- webpack encore assets/bundles/**- Symfony bundle assets/assets/**- general static files
These are returned without imgproxy processing.
Development
Setting up Development Environment
-
Clone the repository:
-
Install dependencies:
- Start Docker environment:
Available Make Commands
Run make help to see all available commands:
Testing
Run the complete test suite:
Test Suite
The project has comprehensive test coverage with 106 tests and 381 assertions:
Test Coverage:
- ✅ Unit Tests - All components (URL builder, filter converter, cache resolver)
- ✅ Integration Tests - Full Symfony kernel with Liip Imagine integration
- ✅ 106 tests with 381 assertions (100% passing)
- ✅ Infection mutation testing for code quality verification
Code Modernization with Rector
Rector automatically refactors code to modern PHP standards:
What Rector improves:
- ✅ Constructor property promotion (PHP 8.0+)
- ✅ Early returns for better readability
- ✅ Type declarations
- ✅ Dead code removal
- ✅ Symfony/PHPUnit best practices
Notes:
- Rector maintains PHP 8.0 compatibility while using modern syntax
- Rector requires PHPStan 1.x, which doesn't support PHP 8.4
- On PHP 8.4, use PHPStan 2.x instead (Rector will be unavailable)
Security Audit
Note: Security audit is primarily useful for applications, not libraries/bundles.
This bundle doesn't commit composer.lock, so the audit only checks development dependencies.
For bundle developers:
For application developers using this bundle:
Always run security audit in your application to check all dependencies including this bundle:
The audit checks dependencies against the PHP Security Advisories Database.
Continuous Integration
The project uses CircleCI to test against multiple PHP and Symfony versions:
- PHP versions: 8.0, 8.1, 8.2, 8.3, 8.4
- Symfony versions: 5.4, 6.4, 7.1
- Dependency strategies:
--prefer-lowestand--prefer-stable
Each CI build runs:
- PHPUnit - 106 tests with 381 assertions (unit + integration)
- ECS - Code style checks (PSR-12)
- PHPStan - Static analysis (level 8)
- Deptrac - Architecture validation (PHP 8.1+ only)
- Rector - Code modernization checks (PHP 8.0-8.3)
- Infection - Mutation testing for code quality
Architecture Layers:
The project uses Deptrac to enforce clean architecture:
- Bundle - Main bundle class (can depend on all layers)
- DependencyInjection - Service configuration (can depend on Imagine)
- Imagine - Core business logic (independent, no external dependencies)
Version-specific tools:
- PHP 8.0: Deptrac skipped (requires PHP 8.1+)
- PHP 8.4: Rector skipped (PHPStan 2.x required for PHP 8.4, which conflicts with Rector 1.x)
Contributing
We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
make test) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Code Quality Standards
All contributions must pass our quality gates:
- PSR-12 coding standards (enforced by ECS)
- PHPStan level 8 static analysis
- Deptrac architecture validation (PHP 8.1+)
- Rector code modernization (optional but recommended)
- Write meaningful commit messages
- Add tests for new features
Before submitting:
License
This project is licensed under the MIT License.
Credits
Developed and maintained by 3BRS
Support
All versions of imgproxy-bundle with dependencies
symfony/config Version ^5.4 || ^6.0 || ^7.0
symfony/dependency-injection Version ^5.4 || ^6.0 || ^7.0
symfony/http-kernel Version ^5.4 || ^6.0 || ^7.0
symfony/string Version ^5.4 || ^6.0 || ^7.0
symfony/translation-contracts Version ^2.5 || ^3.0
liip/imagine-bundle Version ^2.0