• Home
  • Jobs
  • Courses
  • Certifications
  • Companies
  • Online IDE
  • Login
  • Signup
MYTAT
  • Home
  • Jobs
  • Courses
  • Certifications
  • Companies
  • Online IDE
  • Login
  • Signup
HTML
  • Introduction To HTML
  • HTML Elements And Tags
  • Text Formatting And Styling
  • Images And Multimedia
  • Hyperlinks And Anchors
  • Tables And Forms
  • HTML5 Semantic Elements
  • Responsive Design And Meta Tags
  • Embedded Content And APIs
  • Canvas
  • Drawing Basic Shapes
  • Working With Text And Fonts
  • Working With Images
  • Canvas Transformations
  • Working With Animation
  • Interactivity And Event Handling
  • Canvas Advanced
  • Introduction To SVG
  • SVG Gradients And Patterns
  • SVG Transformations And Transitions
  • SVG Filters And Effects
  • SVG Paths And Bezier Curves
  • SVG Icons And Illustrations
  • SVG Responsive Design And Accessibility
  • Home
  • Courses
  • HTML
  • Working With Images

Working with Images

Previous Next

Loading And Displaying Images On The Canvas Using The DrawImage Method

1. Loading Images:

 

Before we can display images on the canvas, we need to load them into our web page. Images can be loaded using the <img> tag in HTML or programmatically using JavaScript. Here's an example of loading an image using JavaScript:



const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const img = new Image();

img.onload = function() {
    // Once the image is loaded, draw it on the canvas
    ctx.drawImage(img, 0, 0);
};

img.src = 'image.jpg'; // Set the image source
 



In this example:
 
  • We create an <img> element using new Image().
  • We set the onload event handler to execute a function when the image is fully loaded.
  • Inside the onload function, we use ctx.drawImage(img, 0, 0) to draw the image on the canvas.
  • Finally, we set the src attribute of the image to the image file path, triggering the image loading process.



2. Displaying Images on the Canvas:

 

The drawImage method is used to display images on the canvas. It can be used in various ways depending on the parameters passed to it.



Here are some common scenarios:


a. Displaying an Entire Image:

 

ctx.drawImage(img, 0, 0);
This code snippet draws the entire image starting from the top-left corner of the canvas (coordinates 0,0).
 



b. Displaying a Cropped Image:
 

ctx.drawImage(img, 50, 50, 100, 100, 0, 0, 100, 100);
 

In this example, we draw a cropped portion (100x100 pixels) of the image starting from coordinates (50,50) on the image and place it at coordinates (0,0) on the canvas.



c. Scaling Images:

 

ctx.drawImage(img, 0, 0, img.width / 2, img.height / 2);
 

This code snippet scales the image to half its original size before drawing it on the canvas. The parameters img.width / 2 and img.height / 2 specify the new width and height of the image.



Example with Explanation:

 

Let's put it all together in a complete example:



<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Canvas Image Example</title>
</head>
<body>
<canvas id="myCanvas" width="400" height="300"></canvas>
<script>
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const img = new Image();

img.onload = function() {
    // Draw the entire image
    ctx.drawImage(img, 0, 0);

    // Draw a cropped portion of the image
    ctx.drawImage(img, 50, 50, 100, 100, 200, 0, 100, 100);

    // Scale the image and draw it
    ctx.drawImage(img, 0, 0, img.width / 2, img.height / 2, 0, 200, 200, 150);
};

img.src = 'image.jpg'; // Path to your image file
</script>
</body>
</html>
 


Try it now



In this example:
 
  • We create an HTML canvas with the ID myCanvas.
  • We load an image using JavaScript (img.src = 'image.jpg';).
  • Once the image is loaded (img.onload), we use ctx.drawImage to display the entire image, a cropped portion, and a scaled version on the canvas.

 



Practice Excercise Practice now

Manipulating Image Data With Methods Such As GetImageData And PutImageData

Understanding getImageData Method:

 

The getImageData method in HTML5 canvas is used to extract pixel data from a specified rectangular area of the canvas. It returns an ImageData object that contains information about the color of each pixel in the specified area.



Syntax:
 

const imageData = ctx.getImageData(x, y, width, height);
 
 
  • x: The x-coordinate of the upper-left corner of the rectangular area.
  • y: The y-coordinate of the upper-left corner of the rectangular area.
  • width: The width of the rectangular area.
  • height: The height of the rectangular area.


Example of getImageData:

 

Let's consider an example where we extract pixel data from a region of the canvas and display information about the pixels in the console:

 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Canvas Image Data Example</title>
</head>
<body>
  <canvas id="myCanvas" width="300" height="150"></canvas>
  <script>
    const canvas = document.getElementById('myCanvas');
    const ctx = canvas.getContext('2d');

    // Draw a rectangle on the canvas
    ctx.fillStyle = 'red';
    ctx.fillRect(50, 25, 200, 100);

    // Get pixel data from the specified region
    const imageData = ctx.getImageData(50, 25, 200, 100);
    console.log(imageData); // Display image data in the console
  </script>
</body>
</html>
 



In this example:

 
  • We create a canvas element with ID myCanvas.
  • We draw a red rectangle on the canvas using fillRect.
  • We use getImageData to extract pixel data from the rectangular area defined by (50, 25, 200, 100) (starting at coordinates (50, 25) and having a width of 200 pixels and height of 100 pixels).
  • The extracted pixel data is logged to the console, showing information such as width, height, and color values of each pixel.



Understanding putImageData Method:

 

The putImageData method is used to draw pixel data onto the canvas. It takes an ImageData object as input and renders it onto the canvas at the specified coordinates.



Syntax:


 

ctx.putImageData(imageData, x, y);
 
 
  • imageData: The ImageData object containing pixel data.
  • x: The x-coordinate where the upper-left corner of the pixel data will be placed.
  • y: The y-coordinate where the upper-left corner of the pixel data will be placed.



Example of putImageData:

 

Let's modify our previous example to extract pixel data, manipulate it, and then draw it back onto the canvas using putImageData:


 



Practice Excercise Practice now

Applying Image Filters And Effects Using Pixel Manipulation Techniques

Introduction to Image Filters and Effects

 

Image filters and effects are tools that modify the appearance of images by changing their colors, tones, textures, and overall visual characteristics. These modifications can be subtle enhancements, dramatic transformations, or stylized artistic renditions.



Pixel Manipulation Techniques


Grayscale Conversion:

 

Grayscale conversion involves transforming a color image into a black-and-white representation where shades of gray correspond to the original color intensities. This effect is achieved by setting the red, green, and blue (RGB) channels of each pixel to the same value.



// Example of grayscale conversion using JavaScript
for (let i = 0; i < imageData.data.length; i += 4) {
    let avg = (imageData.data[i] + imageData.data[i + 1] + imageData.data[i + 2]) / 3;
    imageData.data[i] = avg; // Red channel
    imageData.data[i + 1] = avg; // Green channel
    imageData.data[i + 2] = avg; // Blue channel
}
 



Sepia Tone Effect:

 

The sepia tone effect gives images a warm, brownish tone reminiscent of antique photographs. It involves adjusting the RGB channels of pixels to achieve the desired sepia color.



// Example of sepia tone effect using JavaScript
for (let i = 0; i < imageData.data.length; i += 4) {
    let avg = (imageData.data[i] + imageData.data[i + 1] + imageData.data[i + 2]) / 3;
    imageData.data[i] = avg + 100; // Red channel
    imageData.data[i + 1] = avg + 50; // Green channel
    imageData.data[i + 2] = avg; // Blue channel
}
 




Blur Effect:
 

The blur effect softens and blends edges in an image, creating a smooth and less detailed appearance. One way to implement a blur effect is by averaging the color values of neighboring pixels.

 

// Example of blur effect using JavaScript (3x3 box blur)
for (let y = 0; y < height; y++) {
    for (let x = 0; x < width; x++) {
        let r = 0, g = 0, b = 0;
        for (let dy = -1; dy <= 1; dy++) {
            for (let dx = -1; dx <= 1; dx++) {
                let px = x + dx;
                let py = y + dy;
                if (px >= 0 && px < width && py >= 0 && py < height) {
                    let index = (py * width + px) * 4;
                    r += imageData.data[index];
                    g += imageData.data[index + 1];
                    b += imageData.data[index + 2];
                }
            }
        }
        let index = (y * width + x) * 4;
        imageData.data[index] = r / 9; // Red channel
        imageData.data[index + 1] = g / 9; // Green channel
        imageData.data[index + 2] = b / 9; // Blue channel
    }
}
 



Sharpening Effect:

 

The sharpening effect enhances the edges and details in an image, making it appear more defined. It involves increasing the contrast between adjacent pixels.
javascript



// Example of sharpening effect using JavaScript
for (let i = 0; i < imageData.data.length; i += 4) {
    let r = imageData.data[i];
    let g = imageData.data[i + 1];
    let b = imageData.data[i + 2];
    let avg = (r + g + b) / 3;
    imageData.data[i] = clamp(avg * 1.5 - r); // Red channel
    imageData.data[i + 1] = clamp(avg * 1.5 - g); // Green channel
    imageData.data[i + 2] = clamp(avg * 1.5 - b); // Blue channel
}

// Helper function to clamp values between 0 and 255
function clamp(value) {
    return Math.max(0, Math.min(255, value));
}
 



Color Inversion Effect:

 

The color inversion effect reverses the colors in an image, creating a negative-like appearance. It is achieved by subtracting each color channel value from the maximum color value (255 for 8-bit RGB).


// Example of color inversion effect using JavaScript
for (let i = 0; i < imageData.data.length; i += 4) {
    imageData.data[i] = 255 - imageData.data[i]; // Red channel
    imageData.data[i + 1] = 255 - imageData.data[i + 1]; // Green channel
    imageData.data[i + 2] = 255 - imageData.data[i + 2]; // Blue channel
}



Example Implementation
 

Let's consider an example where we apply multiple image filters and effects to an image using JavaScript and HTML5 canvas:
 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Image Filters and Effects</title>
</head>
<body>
    <canvas id="myCanvas" width="400" height="300"></canvas>
    <script>
        const canvas = document.getElementById('myCanvas');
        const ctx = canvas.getContext('2d');
        const image = new Image();

        image.onload = function () {
            ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
            let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);

            // Example of applying filters and effects
            // Grayscale conversion
            for (let i = 0; i < imageData.data.length; i += 4) {
                let avg = (imageData.data[i] + imageData.data[i + 1] + imageData.data[i + 2]) / 3;
                imageData.data[i] = avg;
                imageData.data[i + 1] = avg;
                imageData.data[i + 2] = avg;
            }

            // Sepia tone effect
            for (let i = 0; i < imageData.data.length; i += 4) {
                let avg = (imageData.data[i] + imageData.data[i + 1] + imageData.data[i + 2]) / 3;
                imageData.data[i] = avg + 100;
                imageData.data[i + 1] = avg + 50;
                imageData.data[i + 2] = avg;
            }

            // Blur effect (3x3 box blur)
            for (let y = 0; y < canvas.height; y++) {
                for (let x = 0; x < canvas.width; x++) {
                    let r = 0, g = 0, b = 0;
                    for (let dy = -1; dy <= 1; dy++) {
                        for (let dx = -1; dx <= 1; dx++) {
                            let px = x + dx;
                            let py = y + dy;
                            if (px >= 0 && px < canvas.width && py >= 0 && py < canvas.height) {
                                let index = (py * canvas.width + px) * 4;
                                r += imageData.data[index];
                                g += imageData.data[index + 1];
                                b += imageData.data[index + 2];
                            }
                        }
                    }
                    let index = (y * canvas.width + x) * 4;
                    imageData.data[index] = r / 9;
                    imageData.data[index + 1] = g / 9;
                    imageData.data[index + 2] = b / 9;
                }
            }

            ctx.putImageData(imageData, 0, 0);
        };

        // Load an example image
        image.src = 'example.jpg';
    </script>
</body>
</html>
 



Try it now




In this example:
 
  • We load an image onto an HTML canvas.
  • We apply grayscale conversion, sepia tone effect, and a blur effect to the image using pixel manipulation techniques.
  • The modified image is displayed on the canvas.

 



Practice Excercise Practice now

Previous Next
COMPANY
  • About us
  • Careers
  • Contact Us
  • In Press
  • People
  • Companies List
Products
  • Features
  • Coding Assessments
  • Psychometric Assessment
  • Aptitude Assessments
  • Tech/Functional Assessments
  • Video Assessment
  • Fluency Assessment
  • Campus
 
  • Learning
  • Campus Recruitment
  • Lateral Recruitment
  • Enterprise
  • Education
  • K 12
  • Government
OTHERS
  • Blog
  • Terms of Services
  • Privacy Policy
  • Refund Policy
  • Mart Category
Partner
  • Partner Login
  • Partner Signup

Copyright © RVR Innovations LLP 2025 | All rights reserved - Mytat.co is the venture of RVR Innovations LLP