FabricJS – Finding the data url after converting a Polygon object to an HTMLCanvasElement?


We can create a Polygon object by creating an instance of fabric.Polygon. A polygon object can be characterized by any closed shape consisting of a set of connected straight line segments. Since it is one of the basic elements of FabricJS, we can also easily customize it by applying properties like angle, opacity etc.

In order to convert a polygon object into HTMLCanvasElement we use the toCanvasElement method. It returns the DOM element of type HTMLCanvasElement, an interface which inherits its properties and methods from the HTMLElement interface. We use the toDataURL method to find the data-URL like representation of the image. The format of the returned image is of the specified type or is png by default and has a resolution of 96dpi.

Syntax

HTMLCanvasElement.toDataURL()

Example 1: Using the toCanvasElement Method

Let’s see a code example to see the logged output when the toCanvasElement method is used. On using the toCanvasElement method, the DOM element of type HTMLCanvasElement is returned. The HTMLCanvasElement interface provides various methods and properties for changing the presentation of the canvas. It inherits the properties and methods of the HTMLElement interface. You can open the console from dev tools to see that the DOM element of type HTMLCanvasElement is being returned.

<!DOCTYPE html>
<html>
<head>
   <!-- Adding the Fabric JS Library-->
   <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
</head>
<body>
   <h2>Using the toCanvasElement method</h2> 
   <p>You can open console from dev tools to see the logged output</p>
   <canvas id="canvas"></canvas>
   <script>
      
      // Initiate a canvas instance
      var canvas = new fabric.Canvas("canvas");
      canvas.setWidth(document.body.scrollWidth);
      canvas.setHeight(250);
      
      // Initiate a polygon object
      var polygon = new fabric.Polygon(
         [
            { x: 600, y: 310 },
            { x: 650, y: 450 },
            { x: 600, y: 480 },
            { x: 550, y: 480 },
            { x: 450, y: 460 },
            { x: 300, y: 210 },
         ],
         {
            fill: "#778899",
            stroke: "blue",
            strokeWidth: 5,
            top: 50,
            left: 100,
            scaleX: 0.5,
            scaleY: 0.5,
         }
      );
      
      // Adding it to the canvas
      canvas.add(polygon);
      
      // Using toCanvasElement method
      console.log(
         "The output on using toCanvasElement method is:",
         polygon.toCanvasElement()
      );
   </script>
</body>
</html>

Example 2: Using toDataURL Method

Let’s see a code example to see the logged output when the toDataURL method is used along with toCanvasElement method to find the data-URL string of the image of Polygon object converted to HTMLCanvasElement. We can copy that URL and paste it into the address bar of a new tab to see the final output. Since we have specified the format as “jpeg”, the image will be in jpeg format.

<!DOCTYPE html>
<html>
<head>
   <!-- Adding the Fabric JS Library-->
   <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
</head>
<body>
   <h2>Using toDataURL method</h2>
   <p>
      You can open console from dev tools to see that the data like URL string of the image is being returned
   </p>
   <canvas id="canvas"></canvas>
   <script>
      
      // Initiate a canvas instance
      var canvas = new fabric.Canvas("canvas");
      canvas.setWidth(document.body.scrollWidth);
      canvas.setHeight(250);
      
      // Initiate a polygon object
      var polygon = new fabric.Polygon(
         [ 
            { x: 600, y: 310 },
            { x: 650, y: 450 },
            { x: 600, y: 480 },
            { x: 550, y: 480 },
            { x: 450, y: 460 },
            { x: 300, y: 210 },
         ],
         {
            fill: "#778899",
            stroke: "blue",
            strokeWidth: 5,
            top: 50,
            left: 100,
            scaleX: 0.5,
            scaleY: 0.5,
         }
      );
      
      // Adding it to the canvas
      canvas.add(polygon);
      
      // Using toCanvasElement method
      var polygonCanvas = polygon.toCanvasElement({
         width: 200,
      });
      
      // Using toDataURL method
      console.log(
         "The data-URL is as follows:",
         polygonCanvas.toDataURL({ format: "jpeg" })
      );
   </script>
</body>
</html>

Conclusion

In this tutorial, we used two simple examples to demonstrate how you can find the data URL after converting a Polygon object to HTMLCanvasElement using FabricJS.

Updated on: 29-Dec-2022

340 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements