Image Cropping and Compression using Jcrop - mobile friendly

Md Imran

 Image Crop, Compress, and Preview: A Practical Guide using jQuery Jcrop

Image Crop, Compress, and Preview: A Practical Guide

In today's digital world, images play a crucial role in communication and presentation. Whether you're sharing photos on social media, creating marketing materials, or showcasing your artwork, the ability to manipulate and optimize images is essential. This blog post will walk you through a step-by-step guide on how to crop, compress, and preview images using a simple yet powerful code snippet.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Image Crop, Compress, and Preview</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-jcrop/2.0.4/css/Jcrop.min.css"> <style> #pimg { max-width: 100%; max-height: 300px; } </style> </head> <body> <div id="id02" class="w3-modal w3-small"> <div class="w3-modal-content w3-card-4 w3-animate-zoom" width="600px"> <div class="w3-row-padding" style='width:300px;'> <img id="pimg"> </div> <br> <button id="cropButton" class="w3-button w3-blue">Crop</button> <button id="confirmCropButton" class="w3-button w3-green" style="display: none;">Confirm Crop</button> </div> </div> <input type="file" id="fileInput"> <div id="preview" class="w3-card-4 w3-round"></div> <img src="https://www.w3schools.com/w3images/avatar2.png" id="sximg" style="width:100px;height:110px;margin-top:20px;"> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-jcrop/2.0.4/js/Jcrop.min.js"></script> <script> var imgToCrop = null; var jcropAPI = null; $(document).ready(function() { $('#fileInput').on('change', function(e) { var file = e.target.files[0]; var reader = new FileReader(); reader.onload = function(e) { var img = new Image(); img.src = e.target.result; img.onload = function(){ $('#pimg').attr('src', e.target.result); $('#id02').show(); imgToCrop = img; $('#cropButton').click(function() { if (imgToCrop !== null) { $('#pimg').Jcrop({ boxWidth: 300, aspectRatio: 7/9, setSelect: [0, 0, 136, 176], onSelect: function(c) { jcropAPI = this; $('#confirmCropButton').show().off().click(function() { if (jcropAPI !== null) { var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); var maxWidth = 300; // Set the maximum width for the cropped image var ratio = maxWidth / c.w; canvas.width = maxWidth; canvas.height = c.h * ratio; var cropWidth = c.w > maxWidth ? maxWidth : c.w; var cropHeight = c.h * ratio; ctx.drawImage(imgToCrop, c.x, c.y, cropWidth, cropHeight, 0, 0, canvas.width, canvas.height); $('#id02').hide(); // Compressing the cropped image var quality = 0.7; // Adjust the quality as needed var base64data = canvas.toDataURL('image/jpeg', quality); $('#sximg').attr('src', base64data); $('#pimg').attr('src', base64data); $('#confirmCropButton').hide(); jcropAPI.destroy(); imgToCrop = null; $.Jcrop.component.DragState.prototype.touch = null; } else { alert('Please crop the image first.'); } }); } }); } else { alert('Please select an image first.'); } }); }; }; reader.readAsDataURL(file); }); }); </script> </body> </html>

The Code Structure

Our code starts with the HTML markup, defining the basic structure of the web page. We include a modal dialog box for displaying the image to be cropped, an input field for uploading the image file, and a preview area for displaying the cropped and compressed image.

The JavaScript code handles the image upload, cropping, compression, and previewing functionalities. It utilizes the Jcrop library to create a cropping interface within the modal dialog box and the FileReader API to read the image file and display it.

Image Upload and Cropping

When an image file is uploaded, the JavaScript code reads the file as a data URL and displays it in the modal dialog box. The Jcrop instance is then initialized, allowing the user to select a rectangular area to crop. Once the user clicks the "Crop" button, the selected area is saved.

Image Compression and Preview

After cropping, the code creates a canvas element and draws the cropped image onto it. The canvas is then used to generate a base64 encoded data URL representing the compressed image. The quality parameter can be adjusted to control the compression level. The compressed image is then displayed in the preview area and also used as the source for the smaller image in the top right corner.

Putting It All Together

The combination of HTML, JavaScript, and the Jcrop library provides a user-friendly interface for cropping, compressing, and previewing images. This code snippet can be easily integrated into your web applications or used as a standalone tool for image manipulation.

Additional Considerations

While this code provides a basic framework for image cropping and compression, there are additional considerations that may be relevant depending on your specific requirements. For instance, you may want to implement a file size limit for uploaded images or provide more granular control over the cropping and compression parameters.

Remember, the key is to strike a balance between image quality and file size to ensure optimal performance and user experience.

Post a Comment

Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.