This plugin allows you to lazy load your images while showing the dominant color of each image as a placeholder – like Pinterest or Google Images. It also enables you to use tiny thumbnails as placeholders. If you want to know how it works read the article Dominant Colors for Lazy-Loading Images, where I explain the general concept.
To ensure the quality of the plugin please let me know if you encounter any issues. I will reply swiftly and fix them as soon as possible!
- The plugin calculates the dominant color of an image upon upload.
- All images attached to posts and pages are automatically replaced with placeholders and load as soon as they enter the viewport to save bandwidth.
- Galleries added via the default
[gallery]shortcode are also replaced and loaded as soon as they appear in the viewport.
- A custom filter for lazy-loading thumbnails or featured images can be used in templates and themes (
apply_filters( 'dominant_colors', $image, $id )).
- Dominant colors can be calculated for all existing attachments in the plugin settings.
- This has already been tested with thousands of images.
- Until the calculation is done you can specify a fallback color for your placeholders.
- All files that can’t be processed are listed during calculation and link to the particular attachment in the media library.
- You can choose between GIF and SVG placeholders.
- SVG placeholders have the same pixel size and aspect ratio as the original images, instead of being a single square pixel. This way responsive images do not need a wrapper for preserving the original aspect ratio.
- GIF placeholders are small and have great browser compatibility. They also enable you to use tiny thumbnails as described on manu.ninja for your images.
- You can set the resolution of tiny thumbnails to 3×3 pixels (120 bytes), 4×4 pixels (128 bytes) or 5×5 pixels (204 bytes).
- The plugin is compatible with RICG Responsive Images, which has been added to WordPress 4.4 as default functionality.
You can see the plugin live at http://www.karriere.at/blog/.
dominant-colors-lazy-loadingfolder to the
- Activate the plugin through the ‘Plugins’ menu in WordPress.
- Why are no dominant colors and tiny thumbnails calculated?
Please make sure that you have installed and activated the
- How do I use the custom filter in my themes?
$image = get_the_post_thumbnail( $post_id );
$image = apply_filters( 'dominant_colors', $image, get_post_thumbnail_id ( $post_id ) );
There is an optional third argument, you can use to specify the format. The available formats are stored as constants in the
Dominant_Colors_Lazy_Loadingclass. If you do not specify a format the filter will use the format you have chosen in the plugin settings.
FORMAT_GIFwill output GIF placeholders.
FORMAT_SVGwill output SVG placeholders.
FORMAT_WRAPPEDwill output GIF placeholders with wrappers to preserve the aspect ratio of responsive images.
div class=”dcll-wrapper” style=”padding-top: 56.25%;”>
Contributors & Developers
“Dominant Colors Lazy Loading” is open source software. The following people have contributed to this plugin.Contributors
- Added an option for
- Added a fallback for images without
wp-image-*classes. The plugin can now determine the attachment ID from the image URL, using
attachment_url_to_postid. This should add support for plugins like WooCommerce, who don’t output their images with
wp-image-*classes. Thanks, @ecksite!
- The first user interaction triggers a viewport check, that means the first
resizeevents still triggers a viewport check.
- All filters are now disabled for Accelerated Mobile Pages when using Automattic’s AMP plugin.
- Style attributes set for SVG placeholders are now purged after loading the original images. This fixes an issue where the background color is visible behind transparent PNGs.
- Added all the functionality needed for tiny thumbnails, including tests. Looking forward to any issues that will inevitably occur 😉
- Prior to this version wrappers created by the custom filter via
FORMAT_WRAPPEDwere removed from the page after image load. This caused some page jumping, which is why they are now left untouched.
- Added an optional argument for specifying the placeholder format the custom filter returns.
- Added a third format (only available via the custom filter) that automatically wraps responsive images so that the placeholder has the right aspect ratio.
- All files that can’t be processed are now listed during calculation and link to the particular attachment in the media library.
- Calculation of missing colors should now be able to scale up to millions of images.
- Admin interface is now split into a tab for placeholder settings and a tab for calculation of missing colors.
- Replaced placeholders now trigger a viewport check, to see if relayout affected the position of any images.
- Fixed a bug in displaying whether calculation of an image failed or succeeded.
- Portuguese translation added by Pedro Mendonça.
- Simple test suite for admin functions added.
- Changed all
array literals to the classic
- Admin interface now shows an error if no ImageMagick PHP extension was found.
- Admin interface is now ready for translation. There is a
.potfile, go crazy 😉
- German translations for the admin interface added.
- Added a bulk operation in the settings for calculating missing dominant color meta values for existing images. Until recently colors were only calculated upon initial upload of an image.
- Filter for lazy-loading images in custom templates and themes added.
- Added an option to specify a fallback color if no dominant color was found.
- Added an option to use SVG placeholders as described by Shaw. SVG placeholders have the same pixel size and aspect ratio as the original images, instead of being a single square pixel. This way responsive images do not need a wrapper for preserving the original aspect ratio.
- Images with no dominant color stored in the database are now automatically skipped.
- Fixed a bug where responsive images weren’t revealed properly.
- Galleries added via the default
[gallery]shortcode are now also lazy loaded while showing the dominant color of each image as a placeholder.
- Initial release — plugin seems to work 😉