Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Nova Advanced Image Field Laravel Package

ctessier/nova-advanced-image-field

A Laravel Nova field that extends the default image field with cropping, resizing, and multi-image support. Crop images to predefined ratios, generate multiple versions, and manage responsive images directly from your Nova admin panel.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • Fits only if the admin surface is Laravel Nova. It is a Nova field, not a portable media component, so it should be treated as admin tooling rather than media architecture.
  • Strong fit for editorial workflows that need crop-before-upload, aspect-ratio enforcement, preview, resize, rotation, and optional field-level format conversion.
  • AdvancedImage extends Nova’s stock Image field, so it is additive to existing filesystem-disk storage patterns and does not require model or schema changes.
  • Does not replace a DAM, CDN transform layer, responsive srcset strategy, asset governance, or queued media pipeline. Use it for upload/admin UX, not delivery strategy.

Integration feasibility

  • Low integration friction: Composer install, auto-discovered service provider, optional config publish, then swap Image::make() for AdvancedImage::make() on selected resources.
  • Existing Nova field chains (disk, path, storeAs, prunable, rules, nullable) should keep working because of inheritance, but the exact API surface should be verified against the installed package source.
  • v2.1.0 adds output-format configuration, making WebP or similar conversion a field-level concern rather than a custom field build.
  • Multi-image/gallery support is advertised but should be treated as unproven until validated on the target Nova version with a throwaway resource.

Technical risk

  • Single-maintainer community package; last tagged release was August 2023 and dependents are low. Pin versions and keep the revert path cheap.
  • Nova major upgrades are the primary breakage vector. Blast radius is small if usage stays limited to fields() arrays and avoids deep subclassing or overriding fill/resolve behavior.
  • Conversion is likely synchronous on upload. Large source images create memory-limit and execution-time exposure before they create product-value exposure.
  • Format conversion depends on runtime encoder support. GD may lack WebP; Imagick may be absent. Silent fallback is the dangerous case because the system may believe it produced WebP when it did not.
  • Changing a field to WebP can break downstream consumers that assume .jpg extensions, MIME types, or cached asset paths.
  • Dimension validation validates the uploaded file, not the resized output. Editors can still upload small images and crop them into upscaled production assets unless rules constrain source dimensions.

Key questions

  • Which Nova major version is installed, and does the package’s declared Nova constraint support it?
  • What image driver and encoders exist on the actual production runtime: GD with WebP, Imagick, or neither?
  • Is conversion acceptable on the upload request, or must it be deferred to a queue?
  • Which storage disks are required, and do public URLs or temporary URLs work correctly for non-local disks such as S3?
  • Does an existing media pipeline already write derived assets? If so, this package should handle cropping/preview only to avoid two systems fighting over the same paths.
  • Is multi-image support required, and has the exact API been validated on the target Nova version?
  • Who owns support, backfill, cache-busting, and rollback if the field breaks after a Nova upgrade?

Integration Approach

Stack fit

  • Best fit is a Laravel application already committed to Nova, with image fields stored on standard Laravel filesystem disks and no existing first-class DAM.
  • The package covers the admin upload surface. Storage policy, transcoding policy, CDN delivery, responsive images, and asset lifecycle remain internal product and platform decisions.
  • Use it to remove custom admin-field work from the backlog: crop constraints, live preview, resize, rotation, and per-field output format become configuration rather than bespoke code.

Migration path

  • No database migration is expected for basic adoption because the field writes through Nova’s existing image/file conventions.
  • Start by pinning ctessier/nova-advanced-image-field to 2.1.* or the exact validated release, then verify composer show ... --all against the installed Nova major.
  • Pilot on one low-traffic resource, ideally a hero image or cover image with a known aspect ratio. Verify the file on disk, stored MIME type, public URL, browser render, and validation behavior end to end.
  • Move repeated field configuration into a small factory or trait so future Nova upgrades or package replacement require one change instead of many resource edits.
  • Treat format conversion as a separate rollout from cropping. Pilot WebP on one resource before broad use.
  • Plan backfill as its own workstream. Changing a field’s output format does not retroactively reprocess existing records, and cached assets may continue serving old formats.

Compatibility

  • Confirm Nova version compatibility before building anything else. This is a Nova field package, so Nova upgrades are the expected compatibility boundary.
  • Confirm PHP version, Laravel version, storage disk behavior, and image driver support on the real runtime image.
  • Audit downstream consumers before WebP rollout: Blade filename manipulation, API resources, sitemaps, email templates, PDF exports, CDN rules, and external systems ingesting image URLs.
  • Avoid deep subclassing or overriding fillUsing/resolveUsing unless necessary; keep the field close to upstream behavior so reverting to stock Image::make() remains a one-line diff per resource.

Sequencing

  1. Validate package/Nova/PHP compatibility and pin the dependency.
  2. Verify runtime image driver and encoder support, including explicit failure behavior for unsupported formats.
  3. Pilot AdvancedImage with crop and aspect ratio on one resource; confirm disk, MIME, URL, and render.
  4. Add resize, quality, and validation rules; test large-image limits and dimension validation.
  5. Pilot format conversion on one resource only; confirm hard failure rather than silent fallback when encoding is unavailable.
  6. Audit downstream filename and MIME assumptions in parallel.
  7. Standardize field configuration through a factory or trait.
  8. Roll out to additional low-risk resources, then broader editorial workflows.
  9. Schedule backfill and cache-busting separately with rollback criteria.
  10. Add monitoring/support runbook for upload failures, missing files, MIME drift, and Nova upgrade regressions.

Operational Impact

Maintenance

  • Low code footprint but non-zero dependency ownership. The package is single-maintainer, last released in 2023, and has low dependent adoption, so the team must own the upgrade and revert path.
  • Pin versions and keep field usage centralized. Avoid spreading custom behavior across many resources.
  • Budget for Nova upgrade testing whenever Nova majors change, even if the expected change is small.
  • Keep disk and conversion policy in config where possible so staging and production can diverge without code changes.

Support

  • No vendor SLA. Internal support will rely on source inspection, package documentation, and a debugging checklist.
  • First-line debugging order should be: does the file exist on disk, is the stored MIME type correct, does the disk URL resolve publicly, is the image driver capable, and are memory/time limits being hit.
  • Editors need guidance on crop quality, minimum source dimensions, accepted formats, transparency handling, and upload size limits.
  • Product support should expect questions around “upload failed on a large image,” “WebP did not convert,” and “old image still shows after format change.”

Scaling

  • Cropping and preview are client-side, but resize, rotation, conversion, and re-encoding can run synchronously on upload. Large images are the main scaling risk.
  • Cap upload size with validation rules and define whether transformation stays in the field or moves to a queue. Choose one owner for derived assets.
  • For high-volume media, do not rely on this package as the transformation layer. Use it for admin capture and crop UX, then hand off delivery and responsive variants to a CDN, Glide, imgix, Cloudinary, or a dedicated queue-based pipeline.
  • Multi-image/gallery use should be capped until proven; if it is rough, prefer one field per image column or a JSON column with a repeatable field.

Failure modes

  • Missing WebP encoder or absent Imagick causing conversion failure or, worse, silent fallback.
  • Large uploads hitting memory_limit or max_execution_time.
  • Extension and MIME drift breaking downstream templates, APIs, sitemaps, or external consumers.
  • PNG transparency converted to JPEG producing black or white boxes.
  • Small source images cropped into upscaled production assets because validation only checked the upload.
  • Nova upgrade breaking the field; recovery depends on how cheaply the team can revert to stock Image.
  • Multi-image behavior differing from expectations on the target Nova version.
  • Cache and backfill gaps after format changes, causing old assets to persist at the same paths.

Ramp-up

  • Developer ramp-up is low for teams already fluent in Nova fields: Composer install, swap the field, verify one resource.
  • Product/editorial ramp-up is moderate: users need clear crop guidance, source-dimension requirements, accepted formats, and upload limits.
  • TPM ramp-up should focus on scope discipline: decide early whether this package owns only admin cropping or also output-format conversion, and ensure it does not collide with an existing media pipeline.
  • Best TPM leverage is to use this as a scoped build-vs-buy decision: buy the Nova admin image UX, keep ownership of storage, delivery, backfill, and media architecture.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource