Google Photos Inspired Image Zoom & Pan Plugin - iv-viewer
| File Size: | 1.72 MB |
|---|---|
| Views Total: | 9532 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
A feature-rich, touch-enabled jQuery & Vanilla JavaScript image viewer plugin that provides zooming and panning functionalities for your images, inspired by Google Photo.
Note that the plugin (v2) now works as a Vanilla JavaScript plugin without any 3rd dependencies. For jQuery users, you're able to download the ImageViewer V1 here.
Table Of Contents:
Features:
- Fullscreen mode: displays images in a fullscreen modal
- Image mode: zoom & pan the image inside itself.
- Container mode: allows you to switch between images just like a gallery.
- Mouse wheel to zoom in / out an image.
- Mouse drag to move an image within the viewport.
- Touch gestures supported.
- Allows to load high resolution image asynchronously.
Install & Download:
# NPM $ npm install iv-viewer --save
How to use it (v1 jQuery):
1. To get started, include the jQuery ImageViewer plugin after you've included jQuery JavaScript library.
<link href="imageviewer.css" rel="stylesheet"> <script src="jquery.min.js"></script> <script src="imageviewer.js"></script>
2. Attach the plugin to your image and done.
<img src="thumb.jpg" data-high-res-src="big.jpg" alt="Image Alt" class="demo">
$(function () {
$('.demo').ImageViewer();
});
3. Show the zoomed image in a fullscreen modal instead.
$(function () {
var viewer = ImageViewer();
$('.demo').click(function () {
var imgSrc = this.src,
highResolutionImage = $(this).data('high-res-img');
viewer.show(imgSrc, highResolutionImage);
});
});
4. Create an zoomable & panable gallery where the users can switch between images by clicking the navigation links.
<div class="image-container"></div> <img src="left.svg" class="prev"/> <img src="right.svg" class="next"/> <div class="footer-info"> <span class="current"></span>/<span class="total"></span> </div>
var images = [{
small : '1.jpg',
big : '1_big.jpg'
},{
small : '2.jpg',
big : '2_big.jpg'
},{
small : '3.jpg',
big : '3_big.jpg'
},{
small : '4.jpg',
big : '4_big.jpg'
}];
var curImageIdx = 1,
total = images.length;
var wrapper = $('#image-gallery'),
curSpan = wrapper.find('.current');
var viewer = ImageViewer(wrapper.find('.image-container'));
// display total count
wrapper.find('.total').html(total);
function showImage(){
var imgObj = images[curImageIdx - 1];
viewer.load(imgObj.small, imgObj.big);
curSpan.html(curImageIdx);
}
wrapper.find('.next').click(function(){
curImageIdx++;
if(curImageIdx > total) curImageIdx = 1;
showImage();
});
wrapper.find('.prev').click(function(){
curImageIdx--;
if(curImageIdx < 0) curImageIdx = total;
showImage();
});
//initially show image
showImage();
5. All configuration options.
$.fn.ImageViewer({
// the initial zoom value of an image
zoomValue: 100,
// show/hide snap view
snapView: true,
// maximum percentage you can zoom an image
maxZoom: 500,
// wether to refresh the viewer on resize of window
refreshOnResize: true,
// wether to zoom in / out an image with mouse wheel
zoomOnMouseWheel : true
});
6. API methods.
// To zoom viewer through code.
// percentageValue : zoom value in percentage.
// point (optional): Point {x, y} which would act as center of zoom. If not defined, it will take center of container as the zooming point.
zoom(zoomValue,point);
// Reset zoom to provided zoomValue through option
viewer.resetZoom();
// reefresh the viewer
viewer.refresh();
// Show the full screen viewer(Note: only available when plugin is initialized in full screen mode).
// imgSrc : image source to display in viewer.
// highResImg (optional) : A high resoultion image source of the same image. Its good when you have a lower quality image already loaded and you to quickly show image on viewer and simultaneously load better quality image.
show(imgSrc, highResImg);
// Hide the full-screen viewer
// Note: only available when plugin is initialized in full screen mode
viewer.hide();
// Load an image or new image in viewer. Available on Full screen and Container mode.
// imgSrc : image source to display in viewer.
// highResImg (optional) : A high resoultion image source of the same image. Its good when you have a lower quality image already loaded and you to quickly show image on viewer and simultaneously load better quality image. load(imgSrc, highResImg);
// Destroy the plugin instance and unbind events. It returns null which should be assigned to viewer variable to completly free the memory.
viewer = viewer.destroy();
How to use it (v2 Vanilla JS):
1. Import the ImageViewer as an ES module.
import ImageViewer from 'iv-viewer';
2. Or load the compiled version in the document.
<link rel="stylesheet" href="/path/to/dist/iv-viewer.css" /> <script src="/path/to/dist/iv-viewer.js"></script>
3. Attach the plugin to your image and done.
<img src="thumb.jpg" data-high-res-src="big.jpg" alt="Image Alt" class="demo">
const image = document.querySelector('.demo');
const viewer = new ImageViewer(image, options);
4. Display an image in fullscreen mode.
const viewer = new FullScreenViewer(options);
viewer.show('thumb.jpg', 'big.jpg');
5. Display images in a gallery.
<div id="image-container"></div>
const container = document.querySelector('#image-container');
const viewer = new ImageViewer(container, options);
6. Possible options. See the Options section above.
7. API methods.
// load an image
viewer.load('image.png', 'hi-res-image.png');
// zoom an image
viewer.zoom(300, { x: 500, y: 500 });
// reset the image
viewer.resetZoom();
// refresh the image
viewer.refresh();
// destroy the plugin
viewer = viewer.destroy();
// hide the image in fullscreen mode
viewer.hide();
Changelog:
2021-06-17
- Update to v2.1.1
About Author:
Author: Sudhanshu Yadav
Website: http://ignitersworld.com/lab/imageViewer.html
This awesome jQuery plugin is developed by s-yadav. For more Advanced Usages, please check the demo page or visit the official website.










