Create an Image Resizer Web Application

In this Post, we’re going to build a simple image resizer web application. This will allow users to upload an image, specify the new dimensions, and then see the resized image. It’s a great way to learn about handling file uploads and manipulating images in JavaScript!

Approach

Here’s how we’ll set this up:

  1. HTML: We’ll create a form to upload images and input fields for the new width and height.
  2. CSS: We’ll style the application to make it user-friendly.
  3. JavaScript: We’ll handle the image resizing logic, updating the displayed image based on user input.

Let’s dive into each part!


1. HTML Code (index.html)

Here’s the HTML structure for our image resizer:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Image Resizer</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1>Image Resizer</h1>
    <input type="file" id="image-input" accept="image/*">
    <br>
    <label for="width">Width:</label>
    <input type="number" id="width" placeholder="Width (px)">
    <label for="height">Height:</label>
    <input type="number" id="height" placeholder="Height (px)">
    <button id="resize-button">Resize Image</button>
    <br>
    <h2>Resized Image:</h2>
    <img id="resized-image" src="" alt="Resized Image" style="display: none;">
    <script src="script.js"></script>
</body>
</html>
  • This HTML file includes a file input for users to upload their images and number inputs for width and height.
  • The <button> triggers the resizing process, and we have an <img> tag to display the resized image once it’s processed.

2. CSS Code (style.css)

Now, let’s add some CSS to style our app:

body {
    font-family: Arial, sans-serif;
    text-align: center;
    margin-top: 20px;
}

input {
    margin: 10px;
}

button {
    padding: 10px 15px;
    background-color: #3498db;
    color: white;
    border: none;
    cursor: pointer;
}

button:hover {
    background-color: #2980b9;
}

#resized-image {
    margin-top: 20px;
    max-width: 100%;
}
  • The CSS styles the body and centers the content.
  • Inputs and buttons have some margin for spacing, and the button has a nice blue color that changes on hover.
  • The resized image is constrained to fit within the page width.

3. JavaScript Code (script.js)

Here’s the JavaScript to make everything work:

document.getElementById("resize-button").addEventListener("click", () => {
    const fileInput = document.getElementById("image-input");
    const widthInput = document.getElementById("width");
    const heightInput = document.getElementById("height");
    const resizedImage = document.getElementById("resized-image");

    const file = fileInput.files[0];
    const reader = new FileReader();

    reader.onload = (event) => {
        const img = new Image();
        img.src = event.target.result;
        img.onload = () => {
            const canvas = document.createElement("canvas");
            canvas.width = widthInput.value || img.width; // Use input or original width
            canvas.height = heightInput.value || img.height; // Use input or original height
            const ctx = canvas.getContext("2d");
            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
            resizedImage.src = canvas.toDataURL();
            resizedImage.style.display = "block"; // Show the resized image
        };
    };

    if (file) {
        reader.readAsDataURL(file);
    }
});
  • We start by adding an event listener to the resize button.
  • When clicked, we retrieve the uploaded file and read it as a Data URL.
  • Once the image is loaded, we create a canvas element to resize the image using drawImage().
  • Finally, we set the src of the <img> to the resized image and display it.

Output

Conclusion

And there you have it! We’ve built a simple image resizer web application that allows users to upload an image, specify the dimensions, and see the resized image instantly. This is a fun project that helps you understand image manipulation and web development basics.

Use Cases

  • Useful for web developers needing to resize images before uploading.
  • Great for graphic design tools or portfolio websites.
  • Handy for personal projects where image size management is required.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top