rares/image-crop-bundle
Symfony bundle for cropping and resizing images in PHP applications. It helps handle uploaded files, define crop dimensions, generate thumbnails, and integrate image-crop workflows into forms and templates with minimal configuration.
srcset generation, or DAM-style derivative management — those need a real imaging service.Consider it when all of these hold:
intervention/image plus a JS cropper and rewrite the wiring anyway. Treat this as architectural inspiration for a Laravel build, not an installable dependency.Look elsewhere — or write it yourself — when:
Practical adoption approach if you do proceed: pin the commit, vendor it, wrap it in your own adapter, and write your own tests around coordinate validation and file-handling edge cases. Budget a half-day for the audit — cheaper than discovering the abandonment cost during a framework upgrade.
To executives: this is a small, well-understood UI component — "choose the part of the image you want to keep." It appears in nearly every consumer product we ship (avatars, product photos, editorial banners). It is not a differentiator and it is not a large line item. The recommendation is not to take the open-source package as a dependency: it is unmaintained (single author, no adoption, no ecosystem), and taking it on converts a small build into a long-term maintenance obligation. Instead, use it as a design reference and build the component in-house in under two weeks. That keeps the code on our stack, on our Laravel/Symfony version, and inside our security review.
To engineering: the package is a Symfony bundle, so it is a direct fit only if we are on Symfony with VichUploaderBundle. If we are on Laravel, it is not adoptable — but the pattern is: Cropper.js emits crop geometry → server re-crops the original (never trusts the client preview) → persistence layer stores the derivative alongside the original. The two non-obvious requirements are (1) validate crop bounds against the actual image server-side, and (2) keep the original so crops are re-derivable when UI dimensions change. Estimated effort: 1–2 weeks including tests; the package saves perhaps 2–3 days of that, and costs us a dependency we cannot patch upstream.
Bottom line: low strategic value, moderate tactical utility as a reference, unacceptable as a long-term dependency. Decision: build the pattern, skip the package.
How can I help you explore Laravel packages today?