{"id":21336,"date":"2015-12-10T11:57:48","date_gmt":"2015-12-10T11:57:48","guid":{"rendered":"http:\/\/how_to_dynamically_distort_images_to_fit_your_graphic_design"},"modified":"2025-02-22T14:52:30","modified_gmt":"2025-02-22T22:52:30","slug":"how_to_dynamically_distort_images_to_fit_your_graphic_design","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design","title":{"rendered":"How To Distort Images Dynamically to Fit your Graphic Design"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><h2>How to Distort images in the cloud<\/h2>\n<p>It can be quite a challenge to graphically design a website or mobile application that displays images in very precise shapes and orientations. <a href=\"https:\/\/cloudinary.com\/solutions\/customization\">Product customization<\/a> can take the form of warping 2D pictures to have a 3D perspective, placing images in precise shapes or overlaying images in specific locations within another image, for example: overlaying an image over the screen of a smartphone.<\/p>\n<p>\nHowever, it&#8217;s important to note that image distortion isn&#8217;t limited to graphic design purposes. In photography, image distortion can occur unintentionally due to lens characteristics, especially with different camera lenses and wide-angle lenses, causing straight lines to appear curved or deformed. This perspective distortion is a common issue in photography that designers and photographers need to address. \n<\/p>\n<p>Whether the desire is to display an image with 3D perspective, or fit an image into an irregular shape, such creativity normally comes with the large overhead of tweaking every image that needs to be displayed. If a website hosts a large number of images, or also wants to reshape user uploaded pictures, the challenge can quickly outweigh the reward or even become insurmountable.<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;base.jpg\\&quot;, {transformation: [ {width: 700, height: 200, crop: \\&quot;scale\\&quot;}, {overlay: \\&quot;mobile_phone\\&quot;, width: 150, gravity: \\&quot;west\\&quot;}, {overlay: \\&quot;mobile_phone\\&quot;, width: 150, gravity: \\&quot;east\\&quot;}, {overlay: \\&quot;movie_time\\&quot;, width: 90, gravity: \\&quot;center\\&quot;}, {overlay: \\&quot;movie_time\\&quot;, width: 100, gravity: \\&quot;east\\&quot;, effect: \\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;}, {overlay: {font_family: \\&quot;roboto\\&quot;, font_size: 120, font_weight: \\&quot;bold\\&quot;, text: \\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;}} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;base.jpg\\&quot;, {transformation: [\\n  {width: 700, height: 200, crop: \\&quot;scale\\&quot;},\\n  {overlay: \\&quot;mobile_phone\\&quot;, width: 150, gravity: \\&quot;west\\&quot;},\\n  {overlay: \\&quot;mobile_phone\\&quot;, width: 150, gravity: \\&quot;east\\&quot;},\\n  {overlay: \\&quot;movie_time\\&quot;, width: 90, gravity: \\&quot;center\\&quot;},\\n  {overlay: \\&quot;movie_time\\&quot;, width: 100, gravity: \\&quot;east\\&quot;, effect: \\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;},\\n  {overlay: {font_family: \\&quot;roboto\\&quot;, font_size: 120, font_weight: \\&quot;bold\\&quot;, text: \\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;}}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;base.jpg\\&quot;)\\n  .resize(scale().width(700).height(200))\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;west\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation().resize(scale().width(90))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;center\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(100))\\n          .reshape(distort([30, 20, 85, 40, 25, 120, -30, 90]))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(text(\\&quot;+        =\\&quot;, new TextStyle(\\&quot;roboto\\&quot;, 120).fontWeight(\\&quot;bold\\&quot;)))\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;base.jpg\\&quot;)\\n  .resize(scale().width(700).height(200))\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;west\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation().resize(scale().width(90))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;center\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(100))\\n          .reshape(distort([30, 20, 85, 40, 25, 120, -30, 90]))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(text(\\&quot;+        =\\&quot;, new TextStyle(\\&quot;roboto\\&quot;, 120).fontWeight(\\&quot;bold\\&quot;)))\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;base.jpg\\&quot; &gt; &lt;Transformation width=\\&quot;700\\&quot; height=\\&quot;200\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt; &lt;Transformation overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;west\\&quot; \\\/&gt; &lt;Transformation overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;east\\&quot; \\\/&gt; &lt;Transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;90\\&quot; gravity=\\&quot;center\\&quot; \\\/&gt; &lt;Transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;100\\&quot; gravity=\\&quot;east\\&quot; effect=\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot; \\\/&gt; &lt;Transformation overlay={{fontFamily: \\&quot;roboto\\&quot;, fontSize: 120, fontWeight: \\&quot;bold\\&quot;, text: \\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;}} \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;base.jpg\\&quot; &gt;\\n\\t&lt;Transformation width=\\&quot;700\\&quot; height=\\&quot;200\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt;\\n\\t&lt;Transformation overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;west\\&quot; \\\/&gt;\\n\\t&lt;Transformation overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;east\\&quot; \\\/&gt;\\n\\t&lt;Transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;90\\&quot; gravity=\\&quot;center\\&quot; \\\/&gt;\\n\\t&lt;Transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;100\\&quot; gravity=\\&quot;east\\&quot; effect=\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot; \\\/&gt;\\n\\t&lt;Transformation overlay={{fontFamily: \\&quot;roboto\\&quot;, fontSize: 120, fontWeight: \\&quot;bold\\&quot;, text: \\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;}} \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;base.jpg\\&quot;)\\n  .resize(scale().width(700).height(200))\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;west\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation().resize(scale().width(90))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;center\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(100))\\n          .reshape(distort([30, 20, 85, 40, 25, 120, -30, 90]))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(text(\\&quot;+        =\\&quot;, new TextStyle(\\&quot;roboto\\&quot;, 120).fontWeight(\\&quot;bold\\&quot;)))\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;base.jpg\\&quot;)\\n  .resize(scale().width(700).height(200))\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;west\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation().resize(scale().width(90))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;center\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(100))\\n          .reshape(distort([30, 20, 85, 40, 25, 120, -30, 90]))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(text(\\&quot;+        =\\&quot;, new TextStyle(\\&quot;roboto\\&quot;, 120).fontWeight(\\&quot;bold\\&quot;)))\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;base.jpg\\&quot; &gt; &lt;cld-transformation width=\\&quot;700\\&quot; height=\\&quot;200\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt; &lt;cld-transformation :overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;west\\&quot; \\\/&gt; &lt;cld-transformation :overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;east\\&quot; \\\/&gt; &lt;cld-transformation :overlay=\\&quot;movie_time\\&quot; width=\\&quot;90\\&quot; gravity=\\&quot;center\\&quot; \\\/&gt; &lt;cld-transformation :overlay=\\&quot;movie_time\\&quot; width=\\&quot;100\\&quot; gravity=\\&quot;east\\&quot; effect=\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot; \\\/&gt; &lt;cld-transformation :overlay=\\&quot;{fontFamily: &#039;roboto&#039;, fontSize: 120, fontWeight: &#039;bold&#039;, text: &#039;%2B%20%20%20%20%20%20%20%20%3D&#039;}\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;base.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation width=\\&quot;700\\&quot; height=\\&quot;200\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;west\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;east\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;movie_time\\&quot; width=\\&quot;90\\&quot; gravity=\\&quot;center\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;movie_time\\&quot; width=\\&quot;100\\&quot; gravity=\\&quot;east\\&quot; effect=\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;{fontFamily: &#039;roboto&#039;, fontSize: 120, fontWeight: &#039;bold&#039;, text: &#039;%2B%20%20%20%20%20%20%20%20%3D&#039;}\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;base.jpg\\&quot;)\\n  .resize(scale().width(700).height(200))\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;west\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation().resize(scale().width(90))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;center\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(100))\\n          .reshape(distort([30, 20, 85, 40, 25, 120, -30, 90]))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(text(\\&quot;+        =\\&quot;, new TextStyle(\\&quot;roboto\\&quot;, 120).fontWeight(\\&quot;bold\\&quot;)))\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;base.jpg\\&quot;)\\n  .resize(scale().width(700).height(200))\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;west\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation().resize(scale().width(90))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;center\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(100))\\n          .reshape(distort([30, 20, 85, 40, 25, 120, -30, 90]))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(text(\\&quot;+        =\\&quot;, new TextStyle(\\&quot;roboto\\&quot;, 120).fontWeight(\\&quot;bold\\&quot;)))\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;base.jpg\\&quot; &gt; &lt;cl-transformation width=\\&quot;700\\&quot; height=\\&quot;200\\&quot; crop=\\&quot;scale\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;west\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;east\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;90\\&quot; gravity=\\&quot;center\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;100\\&quot; gravity=\\&quot;east\\&quot; effect=\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation overlay=\\&quot;text:roboto_120_bold:%2B%20%20%20%20%20%20%20%20%3D\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;base.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation width=\\&quot;700\\&quot; height=\\&quot;200\\&quot; crop=\\&quot;scale\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;west\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation overlay=\\&quot;mobile_phone\\&quot; width=\\&quot;150\\&quot; gravity=\\&quot;east\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;90\\&quot; gravity=\\&quot;center\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;100\\&quot; gravity=\\&quot;east\\&quot; effect=\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation overlay=\\&quot;text:roboto_120_bold:%2B%20%20%20%20%20%20%20%20%3D\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;base.jpg\\&quot;)\\n  .resize(scale().width(700).height(200))\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;west\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation().resize(scale().width(90))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;center\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(100))\\n          .reshape(distort([30, 20, 85, 40, 25, 120, -30, 90]))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(text(\\&quot;+        =\\&quot;, new TextStyle(\\&quot;roboto\\&quot;, 120).fontWeight(\\&quot;bold\\&quot;)))\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;base.jpg\\&quot;)\\n  .resize(scale().width(700).height(200))\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;west\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation().resize(scale().width(90))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;center\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(100))\\n          .reshape(distort([30, 20, 85, 40, 25, 120, -30, 90]))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(text(\\&quot;+        =\\&quot;, new TextStyle(\\&quot;roboto\\&quot;, 120).fontWeight(\\&quot;bold\\&quot;)))\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;base.jpg&#039;, {transformation: [ {width: 700, height: 200, crop: \\&quot;scale\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;mobile_phone\\&quot;), width: 150, gravity: \\&quot;west\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;mobile_phone\\&quot;), width: 150, gravity: \\&quot;east\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 90, gravity: \\&quot;center\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 100, gravity: \\&quot;east\\&quot;, effect: \\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;}, {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;roboto\\&quot;).fontSize(120).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;)} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;base.jpg&#039;, {transformation: [\\n  {width: 700, height: 200, crop: \\&quot;scale\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;mobile_phone\\&quot;), width: 150, gravity: \\&quot;west\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;mobile_phone\\&quot;), width: 150, gravity: \\&quot;east\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 90, gravity: \\&quot;center\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 100, gravity: \\&quot;east\\&quot;, effect: \\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;},\\n  {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;roboto\\&quot;).fontSize(120).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;)}\\n  ]}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;base.jpg\\&quot;).image(transformation=[ {&#039;width&#039;: 700, &#039;height&#039;: 200, &#039;crop&#039;: \\&quot;scale\\&quot;}, {&#039;overlay&#039;: \\&quot;mobile_phone\\&quot;, &#039;width&#039;: 150, &#039;gravity&#039;: \\&quot;west\\&quot;}, {&#039;overlay&#039;: \\&quot;mobile_phone\\&quot;, &#039;width&#039;: 150, &#039;gravity&#039;: \\&quot;east\\&quot;}, {&#039;overlay&#039;: \\&quot;movie_time\\&quot;, &#039;width&#039;: 90, &#039;gravity&#039;: \\&quot;center\\&quot;}, {&#039;overlay&#039;: \\&quot;movie_time\\&quot;, &#039;width&#039;: 100, &#039;gravity&#039;: \\&quot;east\\&quot;, &#039;effect&#039;: \\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;}, {&#039;overlay&#039;: {&#039;font_family&#039;: \\&quot;roboto\\&quot;, &#039;font_size&#039;: 120, &#039;font_weight&#039;: \\&quot;bold\\&quot;, &#039;text&#039;: \\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;}} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;base.jpg\\&quot;).image(transformation=[\\n  {&#039;width&#039;: 700, &#039;height&#039;: 200, &#039;crop&#039;: \\&quot;scale\\&quot;},\\n  {&#039;overlay&#039;: \\&quot;mobile_phone\\&quot;, &#039;width&#039;: 150, &#039;gravity&#039;: \\&quot;west\\&quot;},\\n  {&#039;overlay&#039;: \\&quot;mobile_phone\\&quot;, &#039;width&#039;: 150, &#039;gravity&#039;: \\&quot;east\\&quot;},\\n  {&#039;overlay&#039;: \\&quot;movie_time\\&quot;, &#039;width&#039;: 90, &#039;gravity&#039;: \\&quot;center\\&quot;},\\n  {&#039;overlay&#039;: \\&quot;movie_time\\&quot;, &#039;width&#039;: 100, &#039;gravity&#039;: \\&quot;east\\&quot;, &#039;effect&#039;: \\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;},\\n  {&#039;overlay&#039;: {&#039;font_family&#039;: \\&quot;roboto\\&quot;, &#039;font_size&#039;: 120, &#039;font_weight&#039;: \\&quot;bold\\&quot;, &#039;text&#039;: \\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;}}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;base.jpg&#039;))\\n\\t-&gt;resize(Resize::scale()-&gt;width(700)\\n-&gt;height(200))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;mobile_phone\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(150)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::west()))\\n\\t)\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;mobile_phone\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(150)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::east()))\\n\\t)\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;movie_time\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(90)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::center()))\\n\\t)\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;movie_time\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(100))\\n\\t-&gt;reshape(Reshape::distort([30, 20, 85, 40, 25, 120, -30, 90])))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::east()))\\n\\t)\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::text(\\&quot;+        =\\&quot;,(new TextStyle(\\&quot;roboto\\&quot;,120))\\n\\t-&gt;fontWeight(\\n\\tFontWeight::bold())\\n\\t)));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;base.jpg&#039;))\\n\\t-&gt;resize(Resize::scale()-&gt;width(700)\\n-&gt;height(200))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;mobile_phone\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(150)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::west()))\\n\\t)\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;mobile_phone\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(150)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::east()))\\n\\t)\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;movie_time\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(90)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::center()))\\n\\t)\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;movie_time\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(100))\\n\\t-&gt;reshape(Reshape::distort([30, 20, 85, 40, 25, 120, -30, 90])))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::east()))\\n\\t)\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::text(\\&quot;+        =\\&quot;,(new TextStyle(\\&quot;roboto\\&quot;,120))\\n\\t-&gt;fontWeight(\\n\\tFontWeight::bold())\\n\\t)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;base.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;width\\&quot;=&gt;700, \\&quot;height\\&quot;=&gt;200, \\&quot;crop\\&quot;=&gt;\\&quot;scale\\&quot;), array(\\&quot;overlay\\&quot;=&gt;\\&quot;mobile_phone\\&quot;, \\&quot;width\\&quot;=&gt;150, \\&quot;gravity\\&quot;=&gt;\\&quot;west\\&quot;), array(\\&quot;overlay\\&quot;=&gt;\\&quot;mobile_phone\\&quot;, \\&quot;width\\&quot;=&gt;150, \\&quot;gravity\\&quot;=&gt;\\&quot;east\\&quot;), array(\\&quot;overlay\\&quot;=&gt;\\&quot;movie_time\\&quot;, \\&quot;width\\&quot;=&gt;90, \\&quot;gravity\\&quot;=&gt;\\&quot;center\\&quot;), array(\\&quot;overlay\\&quot;=&gt;\\&quot;movie_time\\&quot;, \\&quot;width\\&quot;=&gt;100, \\&quot;gravity\\&quot;=&gt;\\&quot;east\\&quot;, \\&quot;effect\\&quot;=&gt;\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;), array(\\&quot;overlay\\&quot;=&gt;array(\\&quot;font_family\\&quot;=&gt;\\&quot;roboto\\&quot;, \\&quot;font_size\\&quot;=&gt;120, \\&quot;font_weight\\&quot;=&gt;\\&quot;bold\\&quot;, \\&quot;text\\&quot;=&gt;\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;)) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;base.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;width\\&quot;=&gt;700, \\&quot;height\\&quot;=&gt;200, \\&quot;crop\\&quot;=&gt;\\&quot;scale\\&quot;),\\n  array(\\&quot;overlay\\&quot;=&gt;\\&quot;mobile_phone\\&quot;, \\&quot;width\\&quot;=&gt;150, \\&quot;gravity\\&quot;=&gt;\\&quot;west\\&quot;),\\n  array(\\&quot;overlay\\&quot;=&gt;\\&quot;mobile_phone\\&quot;, \\&quot;width\\&quot;=&gt;150, \\&quot;gravity\\&quot;=&gt;\\&quot;east\\&quot;),\\n  array(\\&quot;overlay\\&quot;=&gt;\\&quot;movie_time\\&quot;, \\&quot;width\\&quot;=&gt;90, \\&quot;gravity\\&quot;=&gt;\\&quot;center\\&quot;),\\n  array(\\&quot;overlay\\&quot;=&gt;\\&quot;movie_time\\&quot;, \\&quot;width\\&quot;=&gt;100, \\&quot;gravity\\&quot;=&gt;\\&quot;east\\&quot;, \\&quot;effect\\&quot;=&gt;\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;),\\n  array(\\&quot;overlay\\&quot;=&gt;array(\\&quot;font_family\\&quot;=&gt;\\&quot;roboto\\&quot;, \\&quot;font_size\\&quot;=&gt;120, \\&quot;font_weight\\&quot;=&gt;\\&quot;bold\\&quot;, \\&quot;text\\&quot;=&gt;\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;))\\n  )))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(700).height(200).crop(\\&quot;scale\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;mobile_phone\\&quot;)).width(150).gravity(\\&quot;west\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;mobile_phone\\&quot;)).width(150).gravity(\\&quot;east\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(90).gravity(\\&quot;center\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(100).gravity(\\&quot;east\\&quot;).effect(\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;).chain() .overlay(new TextLayer().fontFamily(\\&quot;roboto\\&quot;).fontSize(120).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;))).imageTag(\\&quot;base.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .width(700).height(200).crop(\\&quot;scale\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;mobile_phone\\&quot;)).width(150).gravity(\\&quot;west\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;mobile_phone\\&quot;)).width(150).gravity(\\&quot;east\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(90).gravity(\\&quot;center\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(100).gravity(\\&quot;east\\&quot;).effect(\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;).chain()\\n  .overlay(new TextLayer().fontFamily(\\&quot;roboto\\&quot;).fontSize(120).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;))).imageTag(\\&quot;base.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;base.jpg\\&quot;, transformation: [ {width: 700, height: 200, crop: \\&quot;scale\\&quot;}, {overlay: \\&quot;mobile_phone\\&quot;, width: 150, gravity: \\&quot;west\\&quot;}, {overlay: \\&quot;mobile_phone\\&quot;, width: 150, gravity: \\&quot;east\\&quot;}, {overlay: \\&quot;movie_time\\&quot;, width: 90, gravity: \\&quot;center\\&quot;}, {overlay: \\&quot;movie_time\\&quot;, width: 100, gravity: \\&quot;east\\&quot;, effect: \\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;}, {overlay: {font_family: \\&quot;roboto\\&quot;, font_size: 120, font_weight: \\&quot;bold\\&quot;, text: \\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;}} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;base.jpg\\&quot;, transformation: [\\n  {width: 700, height: 200, crop: \\&quot;scale\\&quot;},\\n  {overlay: \\&quot;mobile_phone\\&quot;, width: 150, gravity: \\&quot;west\\&quot;},\\n  {overlay: \\&quot;mobile_phone\\&quot;, width: 150, gravity: \\&quot;east\\&quot;},\\n  {overlay: \\&quot;movie_time\\&quot;, width: 90, gravity: \\&quot;center\\&quot;},\\n  {overlay: \\&quot;movie_time\\&quot;, width: 100, gravity: \\&quot;east\\&quot;, effect: \\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;},\\n  {overlay: {font_family: \\&quot;roboto\\&quot;, font_size: 120, font_weight: \\&quot;bold\\&quot;, text: \\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;}}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(700).Height(200).Crop(\\&quot;scale\\&quot;).Chain() .Overlay(new Layer().PublicId(\\&quot;mobile_phone\\&quot;)).Width(150).Gravity(\\&quot;west\\&quot;).Chain() .Overlay(new Layer().PublicId(\\&quot;mobile_phone\\&quot;)).Width(150).Gravity(\\&quot;east\\&quot;).Chain() .Overlay(new Layer().PublicId(\\&quot;movie_time\\&quot;)).Width(90).Gravity(\\&quot;center\\&quot;).Chain() .Overlay(new Layer().PublicId(\\&quot;movie_time\\&quot;)).Width(100).Gravity(\\&quot;east\\&quot;).Effect(\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;).Chain() .Overlay(new TextLayer().FontFamily(\\&quot;roboto\\&quot;).FontSize(120).FontWeight(\\&quot;bold\\&quot;).Text(\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;))).BuildImageTag(\\&quot;base.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Width(700).Height(200).Crop(\\&quot;scale\\&quot;).Chain()\\n  .Overlay(new Layer().PublicId(\\&quot;mobile_phone\\&quot;)).Width(150).Gravity(\\&quot;west\\&quot;).Chain()\\n  .Overlay(new Layer().PublicId(\\&quot;mobile_phone\\&quot;)).Width(150).Gravity(\\&quot;east\\&quot;).Chain()\\n  .Overlay(new Layer().PublicId(\\&quot;movie_time\\&quot;)).Width(90).Gravity(\\&quot;center\\&quot;).Chain()\\n  .Overlay(new Layer().PublicId(\\&quot;movie_time\\&quot;)).Width(100).Gravity(\\&quot;east\\&quot;).Effect(\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;).Chain()\\n  .Overlay(new TextLayer().FontFamily(\\&quot;roboto\\&quot;).FontSize(120).FontWeight(\\&quot;bold\\&quot;).Text(\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;))).BuildImageTag(\\&quot;base.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;base.jpg&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;w_700,h_200\\\/l_mobile_phone,w_150,g_west\\\/l_mobile_phone,w_150,g_east\\\/l_movie_time,w_90,g_center\\\/l_movie_time,w_100,g_east,e_distort:30:20:85:40:25:120:-30:90\\\/l_text:roboto_120_bold:+        =\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;base.jpg&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;w_700,h_200\\\/l_mobile_phone,w_150,g_west\\\/l_mobile_phone,w_150,g_east\\\/l_movie_time,w_90,g_center\\\/l_movie_time,w_100,g_east,e_distort:30:20:85:40:25:120:-30:90\\\/l_text:roboto_120_bold:+        =\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(700).setHeight(200).setCrop(\\&quot;scale\\&quot;).chain() .setOverlay(\\&quot;mobile_phone\\&quot;).setWidth(150).setGravity(\\&quot;west\\&quot;).chain() .setOverlay(\\&quot;mobile_phone\\&quot;).setWidth(150).setGravity(\\&quot;east\\&quot;).chain() .setOverlay(\\&quot;movie_time\\&quot;).setWidth(90).setGravity(\\&quot;center\\&quot;).chain() .setOverlay(\\&quot;movie_time\\&quot;).setWidth(100).setGravity(\\&quot;east\\&quot;).setEffect(\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;).chain() .setOverlay(\\&quot;text:roboto_120_bold:%2B%20%20%20%20%20%20%20%20%3D\\&quot;)).generate(\\&quot;base.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setWidth(700).setHeight(200).setCrop(\\&quot;scale\\&quot;).chain()\\n  .setOverlay(\\&quot;mobile_phone\\&quot;).setWidth(150).setGravity(\\&quot;west\\&quot;).chain()\\n  .setOverlay(\\&quot;mobile_phone\\&quot;).setWidth(150).setGravity(\\&quot;east\\&quot;).chain()\\n  .setOverlay(\\&quot;movie_time\\&quot;).setWidth(90).setGravity(\\&quot;center\\&quot;).chain()\\n  .setOverlay(\\&quot;movie_time\\&quot;).setWidth(100).setGravity(\\&quot;east\\&quot;).setEffect(\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;).chain()\\n  .setOverlay(\\&quot;text:roboto_120_bold:%2B%20%20%20%20%20%20%20%20%3D\\&quot;)).generate(\\&quot;base.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(700).height(200).crop(\\&quot;scale\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;mobile_phone\\&quot;)).width(150).gravity(\\&quot;west\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;mobile_phone\\&quot;)).width(150).gravity(\\&quot;east\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(90).gravity(\\&quot;center\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(100).gravity(\\&quot;east\\&quot;).effect(\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;).chain() .overlay(new TextLayer().fontFamily(\\&quot;roboto\\&quot;).fontSize(120).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;))).generate(\\&quot;base.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .width(700).height(200).crop(\\&quot;scale\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;mobile_phone\\&quot;)).width(150).gravity(\\&quot;west\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;mobile_phone\\&quot;)).width(150).gravity(\\&quot;east\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(90).gravity(\\&quot;center\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(100).gravity(\\&quot;east\\&quot;).effect(\\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;).chain()\\n  .overlay(new TextLayer().fontFamily(\\&quot;roboto\\&quot;).fontSize(120).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;))).generate(\\&quot;base.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;base.jpg&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;w_700,h_200\\\/l_mobile_phone,w_150,g_west\\\/l_mobile_phone,w_150,g_east\\\/l_movie_time,w_90,g_center\\\/l_movie_time,w_100,g_east,e_distort:30:20:85:40:25:120:-30:90\\\/l_text:roboto_120_bold:+        =\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;base.jpg&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;w_700,h_200\\\/l_mobile_phone,w_150,g_west\\\/l_mobile_phone,w_150,g_east\\\/l_movie_time,w_90,g_center\\\/l_movie_time,w_100,g_east,e_distort:30:20:85:40:25:120:-30:90\\\/l_text:roboto_120_bold:+        =\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;base.jpg\\&quot;)\\n\\t resize(Resize.scale() { width(700)\\n height(200) })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;mobile_phone\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(150) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.west()))\\n\\t })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;mobile_phone\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(150) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.east()))\\n\\t })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;movie_time\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(90) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.center()))\\n\\t })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;movie_time\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(100) })\\n\\t reshape(Reshape.distort(listOf(30, 20, 85, 40, 25, 120, -30, 90))) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.east()))\\n\\t })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.text(\\&quot;+        =\\&quot;,TextStyle(\\&quot;roboto\\&quot;,120) {\\n\\t fontWeight(\\n\\tFontWeight.bold())\\n\\t }))) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;base.jpg\\&quot;)\\n\\t resize(Resize.scale() { width(700)\\n height(200) })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;mobile_phone\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(150) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.west()))\\n\\t })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;mobile_phone\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(150) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.east()))\\n\\t })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;movie_time\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(90) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.center()))\\n\\t })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;movie_time\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(100) })\\n\\t reshape(Reshape.distort(listOf(30, 20, 85, 40, 25, 120, -30, 90))) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.east()))\\n\\t })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.text(\\&quot;+        =\\&quot;,TextStyle(\\&quot;roboto\\&quot;,120) {\\n\\t fontWeight(\\n\\tFontWeight.bold())\\n\\t }))) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;base.jpg\\&quot;, {transformation: [ {width: 700, height: 200, crop: \\&quot;scale\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;mobile_phone\\&quot;), width: 150, gravity: \\&quot;west\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;mobile_phone\\&quot;), width: 150, gravity: \\&quot;east\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 90, gravity: \\&quot;center\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 100, gravity: \\&quot;east\\&quot;, effect: \\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;}, {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;roboto\\&quot;).fontSize(120).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;)} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;base.jpg\\&quot;, {transformation: [\\n  {width: 700, height: 200, crop: \\&quot;scale\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;mobile_phone\\&quot;), width: 150, gravity: \\&quot;west\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;mobile_phone\\&quot;), width: 150, gravity: \\&quot;east\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 90, gravity: \\&quot;center\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 100, gravity: \\&quot;east\\&quot;, effect: \\&quot;distort:30:20:85:40:25:120:-30:90\\&quot;},\\n  {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;roboto\\&quot;).fontSize(120).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;%2B%20%20%20%20%20%20%20%20%3D\\&quot;)}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;base.jpg\\&quot;)\\n  .resize(scale().width(700).height(200))\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;west\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation().resize(scale().width(90))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;center\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(100))\\n          .reshape(distort([30, 20, 85, 40, 25, 120, -30, 90]))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(text(\\&quot;+        =\\&quot;, new TextStyle(\\&quot;roboto\\&quot;, 120).fontWeight(\\&quot;bold\\&quot;)))\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;base.jpg\\&quot;)\\n  .resize(scale().width(700).height(200))\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;west\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;mobile_phone\\&quot;).transformation(\\n        new Transformation().resize(scale().width(150))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation().resize(scale().width(90))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;center\\&quot;)))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(100))\\n          .reshape(distort([30, 20, 85, 40, 25, 120, -30, 90]))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;east\\&quot;)))\\n  )\\n  .overlay(\\n    source(text(\\&quot;+        =\\&quot;, new TextStyle(\\&quot;roboto\\&quot;, 120).fontWeight(\\&quot;bold\\&quot;)))\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/w_700,h_200\\\/l_mobile_phone,w_150,g_west\\\/l_mobile_phone,w_150,g_east\\\/l_movie_time,w_90,g_center\\\/l_movie_time,w_100,g_east,e_distort:30:20:85:40:25:120:-30:90\\\/l_text:roboto_120_bold:+%20%20%20%20%20%20%20%20=\\\/base.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;width&quot;:&quot;700&quot;,&quot;height&quot;:&quot;200&quot;},{&quot;overlay&quot;:&quot;mobile_phone&quot;,&quot;width&quot;:&quot;150&quot;,&quot;gravity&quot;:&quot;west&quot;},{&quot;overlay&quot;:&quot;mobile_phone&quot;,&quot;width&quot;:&quot;150&quot;,&quot;gravity&quot;:&quot;east&quot;},{&quot;overlay&quot;:&quot;movie_time&quot;,&quot;width&quot;:&quot;90&quot;,&quot;gravity&quot;:&quot;center&quot;},{&quot;overlay&quot;:&quot;movie_time&quot;,&quot;width&quot;:&quot;100&quot;,&quot;gravity&quot;:&quot;east&quot;,&quot;effect&quot;:&quot;distort:30:20:85:40:25:120:-30:90&quot;},{&quot;overlay&quot;:&quot;text:roboto_120_bold:+        =&quot;}],&quot;transformation_string&quot;:&quot;w_700,h_200\\\/l_mobile_phone,w_150,g_west\\\/l_mobile_phone,w_150,g_east\\\/l_movie_time,w_90,g_center\\\/l_movie_time,w_100,g_east,e_distort:30:20:85:40:25:120:-30:90\\\/l_text:roboto_120_bold:+        =&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;base.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_700,h_200\/l_mobile_phone,w_150,g_west\/l_mobile_phone,w_150,g_east\/l_movie_time,w_90,g_center\/l_movie_time,w_100,g_east,e_distort:30:20:85:40:25:120:-30:90\/l_text:roboto_120_bold:+%20%20%20%20%20%20%20%20=\/base.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_700,h_200\/l_mobile_phone,w_150,g_west\/l_mobile_phone,w_150,g_east\/l_movie_time,w_90,g_center\/l_movie_time,w_100,g_east,e_distort:30:20:85:40:25:120:-30:90\/l_text:roboto_120_bold:+%20%20%20%20%20%20%20%20=\/base.jpg\" alt=\"smartphone with distorted overlay\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"700\" height=\"200\"\/><\/a><\/p>\n<p>The solution is to use a tool that can dynamically do the transformations for you, based on predefined parameters. This blog post will show you how to accomplish this with two new effects Cloudinary has added to its considerable repertoire of image transformation features: <code>distort<\/code> and <code>shear<\/code>.<\/p>\n<h2>Transforming images using the distort effect<\/h2>\n<p>In order to make it easy to consistently shape your images, Cloudinary has introduced support for a transformation <code>effect<\/code> called <code>distort<\/code> (<code>e_distort<\/code> in image transformation URLs) that allows you to dynamically customize your images to fit any quadrilateral shape. A quadrilateral (also known as a quadrangle or tetragon) is any polygon with four edges (or sides) and four vertices (or corners). The effect distorts an image by giving each of the four corners of the image new coordinates, and then mapping every pixel in the image in proportion to the new shape of the quadrilateral.<\/p>\n<p>The distort effect parameter accepts 8 values separated by colons (<code>:<\/code>), as each of the 4 corners needs to be represented by both an x and a y coordinate. The new coordinates for each of the 4 corners is given in a clockwise direction, starting with the top left corner, and the value of each new coordinate can be one of the following values:<\/p>\n<ul>\n<li>An integer representing the number of pixels from the top left corner (which has the coordinates: 0,0).<\/li>\n<li>A string (an integer with a <code>p<\/code> appended) representing the percentage from the top left corner (which has the coordinates: 0p,0p).<\/li>\n<\/ul>\n<p>The image below shows an example of calculating the coordinates of the new corners of an image when distorting it to a new shape. The image originally has a width of 300 pixels and a height of 180 pixels, and the new corner coordinates are given in relation to these values:<\/p>\n<p><code>e_distort:40:25:280:60:260:155:35:165<\/code><\/p>\n<p><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/Distort_example.png\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/Distort_example.png\" alt=\"Distorting an image by redefining the corner coordinates\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"397\" height=\"248\"\/><\/a><\/p>\n<p>The following two images show the<code>movie_time<\/code> image, and then the image after applying the distort effect calculated above:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {width: 300, height: 180, crop: \\&quot;fill\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {width: 300, height: 180, crop: \\&quot;fill\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).resize(fill().width(300).height(180));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).resize(fill().width(300).height(180));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;movie_time.jpg\\&quot; &gt; &lt;Transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;movie_time.jpg\\&quot; &gt;\\n\\t&lt;Transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).resize(fill().width(300).height(180));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).resize(fill().width(300).height(180));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;movie_time.jpg\\&quot; &gt; &lt;cld-transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;movie_time.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).resize(fill().width(300).height(180));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).resize(fill().width(300).height(180));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;movie_time.jpg\\&quot; &gt; &lt;cl-transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;movie_time.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).resize(fill().width(300).height(180));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).resize(fill().width(300).height(180));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;movie_time.jpg&#039;, {width: 300, height: 180, crop: \\&quot;fill\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;movie_time.jpg&#039;, {width: 300, height: 180, crop: \\&quot;fill\\&quot;}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).image(width=300, height=180, crop=\\&quot;fill\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).image(width=300, height=180, crop=\\&quot;fill\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;movie_time.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(300)\\n-&gt;height(180));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;movie_time.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(300)\\n-&gt;height(180));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, array(\\&quot;width\\&quot;=&gt;300, \\&quot;height\\&quot;=&gt;180, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, array(\\&quot;width\\&quot;=&gt;300, \\&quot;height\\&quot;=&gt;180, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(300).height(180).crop(\\&quot;fill\\&quot;)).imageTag(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(300).height(180).crop(\\&quot;fill\\&quot;)).imageTag(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, width: 300, height: 180, crop: \\&quot;fill\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, width: 300, height: 180, crop: \\&quot;fill\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(300).Height(180).Crop(\\&quot;fill\\&quot;)).BuildImageTag(\\&quot;movie_time.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(300).Height(180).Crop(\\&quot;fill\\&quot;)).BuildImageTag(\\&quot;movie_time.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(300)\\n.height(180)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(300)\\n.height(180)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(300).setHeight(180).setCrop(\\&quot;fill\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(300).setHeight(180).setCrop(\\&quot;fill\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(300).height(180).crop(\\&quot;fill\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(300).height(180).crop(\\&quot;fill\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(300)\\n.height(180)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(300)\\n.height(180)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;movie_time.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(300)\\n height(180) }) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;movie_time.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(300)\\n height(180) }) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {width: 300, height: 180, crop: \\&quot;fill\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {width: 300, height: 180, crop: \\&quot;fill\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).resize(fill().width(300).height(180));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).resize(fill().width(300).height(180));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/w_300,h_180,c_fill\\\/movie_time.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;width&quot;:&quot;300&quot;,&quot;height&quot;:&quot;180&quot;,&quot;crop_mode&quot;:&quot;fill&quot;}],&quot;transformation_string&quot;:&quot;w_300,h_180,c_fill&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;movie_time.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_300,h_180,c_fill\/movie_time.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_300,h_180,c_fill\/movie_time.jpg\" alt=\"movie_time image\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"300\" height=\"180\"\/><\/a><\/p>\n<p>Applying the same distort effect (calculated above) to this image, using on-the-fly image transformation URLs:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {transformation: [ {width: 300, height: 180, crop: \\&quot;fill\\&quot;}, {effect: \\&quot;distort:40:25:280:60:260:155:35:165\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {transformation: [\\n  {width: 300, height: 180, crop: \\&quot;fill\\&quot;},\\n  {effect: \\&quot;distort:40:25:280:60:260:155:35:165\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;)\\n  .resize(fill().width(300).height(180))\\n  .reshape(distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;)\\n  .resize(fill().width(300).height(180))\\n  .reshape(distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;movie_time.jpg\\&quot; &gt; &lt;Transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;Transformation effect=\\&quot;distort:40:25:280:60:260:155:35:165\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;movie_time.jpg\\&quot; &gt;\\n\\t&lt;Transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n\\t&lt;Transformation effect=\\&quot;distort:40:25:280:60:260:155:35:165\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;)\\n  .resize(fill().width(300).height(180))\\n  .reshape(distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;)\\n  .resize(fill().width(300).height(180))\\n  .reshape(distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;movie_time.jpg\\&quot; &gt; &lt;cld-transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;cld-transformation effect=\\&quot;distort:40:25:280:60:260:155:35:165\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;movie_time.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation effect=\\&quot;distort:40:25:280:60:260:155:35:165\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;)\\n  .resize(fill().width(300).height(180))\\n  .reshape(distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;)\\n  .resize(fill().width(300).height(180))\\n  .reshape(distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;movie_time.jpg\\&quot; &gt; &lt;cl-transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation effect=\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;movie_time.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation width=\\&quot;300\\&quot; height=\\&quot;180\\&quot; crop=\\&quot;fill\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation effect=\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;)\\n  .resize(fill().width(300).height(180))\\n  .reshape(distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;)\\n  .resize(fill().width(300).height(180))\\n  .reshape(distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;movie_time.jpg&#039;, {transformation: [ {width: 300, height: 180, crop: \\&quot;fill\\&quot;}, {effect: \\&quot;distort:40:25:280:60:260:155:35:165\\&quot;} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;movie_time.jpg&#039;, {transformation: [\\n  {width: 300, height: 180, crop: \\&quot;fill\\&quot;},\\n  {effect: \\&quot;distort:40:25:280:60:260:155:35:165\\&quot;}\\n  ]}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).image(transformation=[ {&#039;width&#039;: 300, &#039;height&#039;: 180, &#039;crop&#039;: \\&quot;fill\\&quot;}, {&#039;effect&#039;: \\&quot;distort:40:25:280:60:260:155:35:165\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).image(transformation=[\\n  {&#039;width&#039;: 300, &#039;height&#039;: 180, &#039;crop&#039;: \\&quot;fill\\&quot;},\\n  {&#039;effect&#039;: \\&quot;distort:40:25:280:60:260:155:35:165\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;movie_time.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(300)\\n-&gt;height(180))\\n\\t-&gt;reshape(Reshape::distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;movie_time.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(300)\\n-&gt;height(180))\\n\\t-&gt;reshape(Reshape::distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;width\\&quot;=&gt;300, \\&quot;height\\&quot;=&gt;180, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;), array(\\&quot;effect\\&quot;=&gt;\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;width\\&quot;=&gt;300, \\&quot;height\\&quot;=&gt;180, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;),\\n  array(\\&quot;effect\\&quot;=&gt;\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;)\\n  )))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(300).height(180).crop(\\&quot;fill\\&quot;).chain() .effect(\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;)).imageTag(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .width(300).height(180).crop(\\&quot;fill\\&quot;).chain()\\n  .effect(\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;)).imageTag(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, transformation: [ {width: 300, height: 180, crop: \\&quot;fill\\&quot;}, {effect: \\&quot;distort:40:25:280:60:260:155:35:165\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, transformation: [\\n  {width: 300, height: 180, crop: \\&quot;fill\\&quot;},\\n  {effect: \\&quot;distort:40:25:280:60:260:155:35:165\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(300).Height(180).Crop(\\&quot;fill\\&quot;).Chain() .Effect(\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;)).BuildImageTag(\\&quot;movie_time.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Width(300).Height(180).Crop(\\&quot;fill\\&quot;).Chain()\\n  .Effect(\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;)).BuildImageTag(\\&quot;movie_time.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(300)\\n.height(180))\\n\\t.reshape(Reshape.distort([40, 25, 280, 60, 260, 155, 35, 165])));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(300)\\n.height(180))\\n\\t.reshape(Reshape.distort([40, 25, 280, 60, 260, 155, 35, 165])));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(300).setHeight(180).setCrop(\\&quot;fill\\&quot;).chain() .setEffect(\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setWidth(300).setHeight(180).setCrop(\\&quot;fill\\&quot;).chain()\\n  .setEffect(\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(300).height(180).crop(\\&quot;fill\\&quot;).chain() .effect(\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .width(300).height(180).crop(\\&quot;fill\\&quot;).chain()\\n  .effect(\\&quot;distort:40:25:280:60:260:155:35:165\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(300)\\n.height(180))\\n\\t.reshape(Reshape.distort([40, 25, 280, 60, 260, 155, 35, 165])));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(300)\\n.height(180))\\n\\t.reshape(Reshape.distort([40, 25, 280, 60, 260, 155, 35, 165])));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;movie_time.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(300)\\n height(180) })\\n\\t reshape(Reshape.distort(listOf(40, 25, 280, 60, 260, 155, 35, 165))) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;movie_time.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(300)\\n height(180) })\\n\\t reshape(Reshape.distort(listOf(40, 25, 280, 60, 260, 155, 35, 165))) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {transformation: [ {width: 300, height: 180, crop: \\&quot;fill\\&quot;}, {effect: \\&quot;distort:40:25:280:60:260:155:35:165\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {transformation: [\\n  {width: 300, height: 180, crop: \\&quot;fill\\&quot;},\\n  {effect: \\&quot;distort:40:25:280:60:260:155:35:165\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;)\\n  .resize(fill().width(300).height(180))\\n  .reshape(distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;)\\n  .resize(fill().width(300).height(180))\\n  .reshape(distort([40, 25, 280, 60, 260, 155, 35, 165]));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/w_300,h_180,c_fill\\\/e_distort:40:25:280:60:260:155:35:165\\\/movie_time.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;width&quot;:&quot;300&quot;,&quot;height&quot;:&quot;180&quot;,&quot;crop_mode&quot;:&quot;fill&quot;},{&quot;effect&quot;:&quot;distort:40:25:280:60:260:155:35:165&quot;}],&quot;transformation_string&quot;:&quot;w_300,h_180,c_fill\\\/e_distort:40:25:280:60:260:155:35:165&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;movie_time.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_300,h_180,c_fill\/e_distort:40:25:280:60:260:155:35:165\/movie_time.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_300,h_180,c_fill\/e_distort:40:25:280:60:260:155:35:165\/movie_time.jpg\" alt=\"movie_time image with distort effect e_distort:40:25:280:60:260:155:35:165\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"300\" height=\"180\"\/><\/a><\/p>\n<h2>Overlays with 3D perspective<\/h2>\n<p>The distort effect is especially useful when used together with the overlay feature to create 3D perspectives. You can transform your image overlays (or underlays for that matter) to exactly match the dimensions and perspective of any quadrilateral shape in an image.<\/p>\n<p>The following example demonstrates how an overlay can be distorted to match the 3D perspective of a DVD cover:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;disc_box.jpg\\&quot; &gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;disc_box.jpg\\&quot; &gt;\\n\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;disc_box.jpg\\&quot; &gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;disc_box.jpg\\&quot; &gt;\\n\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;disc_box.jpg\\&quot; &gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;disc_box.jpg\\&quot; &gt;\\n\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;disc_box.jpg&#039;).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;disc_box.jpg&#039;).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;disc_box.jpg\\&quot;).image()&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;disc_box.jpg\\&quot;).image()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;disc_box.jpg&#039;));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;disc_box.jpg&#039;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().imageTag(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().imageTag(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.BuildImageTag(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.BuildImageTag(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;disc_box.jpg&#039;).transformation(Transformation());&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;disc_box.jpg&#039;).transformation(Transformation());&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().generate(\\&quot;disc_box.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().generate(\\&quot;disc_box.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().generate(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().generate(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;disc_box.jpg&#039;).transformation(Transformation());&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;disc_box.jpg&#039;).transformation(Transformation());&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;disc_box.jpg\\&quot;) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;disc_box.jpg\\&quot;) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/disc_box.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[],&quot;transformation_string&quot;:&quot;&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;disc_box.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/disc_box.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_400\/disc_box.jpg\" alt=\"DVD cover image\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"400\" height=\"400\"\/><\/a><\/p>\n<p>An overlay of the <code>movie_time<\/code> image can be distorted to match the 3D perspective of the DVD cover, where each of the 4 corners of the overlay is adjusted to coincide with the 4 corners of the DVD cover:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;disc_box.jpg\\&quot;, {transformation: [ {width: 400, crop: \\&quot;scale\\&quot;}, {overlay: \\&quot;movie_time\\&quot;, width: 300, effect: \\&quot;distort:55:55:195:20:195:350:55:320\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;disc_box.jpg\\&quot;, {transformation: [\\n  {width: 400, crop: \\&quot;scale\\&quot;},\\n  {overlay: \\&quot;movie_time\\&quot;, width: 300, effect: \\&quot;distort:55:55:195:20:195:350:55:320\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;)\\n  .resize(scale().width(400))\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(300))\\n          .reshape(distort([55, 55, 195, 20, 195, 350, 55, 320]))\\n      )\\n    )\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;)\\n  .resize(scale().width(400))\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(300))\\n          .reshape(distort([55, 55, 195, 20, 195, 350, 55, 320]))\\n      )\\n    )\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;disc_box.jpg\\&quot; &gt; &lt;Transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt; &lt;Transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;300\\&quot; effect=\\&quot;distort:55:55:195:20:195:350:55:320\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;disc_box.jpg\\&quot; &gt;\\n\\t&lt;Transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt;\\n\\t&lt;Transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;300\\&quot; effect=\\&quot;distort:55:55:195:20:195:350:55:320\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;)\\n  .resize(scale().width(400))\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(300))\\n          .reshape(distort([55, 55, 195, 20, 195, 350, 55, 320]))\\n      )\\n    )\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;)\\n  .resize(scale().width(400))\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(300))\\n          .reshape(distort([55, 55, 195, 20, 195, 350, 55, 320]))\\n      )\\n    )\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;disc_box.jpg\\&quot; &gt; &lt;cld-transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt; &lt;cld-transformation :overlay=\\&quot;movie_time\\&quot; width=\\&quot;300\\&quot; effect=\\&quot;distort:55:55:195:20:195:350:55:320\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;disc_box.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;movie_time\\&quot; width=\\&quot;300\\&quot; effect=\\&quot;distort:55:55:195:20:195:350:55:320\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;)\\n  .resize(scale().width(400))\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(300))\\n          .reshape(distort([55, 55, 195, 20, 195, 350, 55, 320]))\\n      )\\n    )\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;)\\n  .resize(scale().width(400))\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(300))\\n          .reshape(distort([55, 55, 195, 20, 195, 350, 55, 320]))\\n      )\\n    )\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;disc_box.jpg\\&quot; &gt; &lt;cl-transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;300\\&quot; effect=\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;disc_box.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation overlay=\\&quot;movie_time\\&quot; width=\\&quot;300\\&quot; effect=\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;)\\n  .resize(scale().width(400))\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(300))\\n          .reshape(distort([55, 55, 195, 20, 195, 350, 55, 320]))\\n      )\\n    )\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;)\\n  .resize(scale().width(400))\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(300))\\n          .reshape(distort([55, 55, 195, 20, 195, 350, 55, 320]))\\n      )\\n    )\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;disc_box.jpg&#039;, {transformation: [ {width: 400, crop: \\&quot;scale\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 300, effect: \\&quot;distort:55:55:195:20:195:350:55:320\\&quot;} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;disc_box.jpg&#039;, {transformation: [\\n  {width: 400, crop: \\&quot;scale\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 300, effect: \\&quot;distort:55:55:195:20:195:350:55:320\\&quot;}\\n  ]}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;disc_box.jpg\\&quot;).image(transformation=[ {&#039;width&#039;: 400, &#039;crop&#039;: \\&quot;scale\\&quot;}, {&#039;overlay&#039;: \\&quot;movie_time\\&quot;, &#039;width&#039;: 300, &#039;effect&#039;: \\&quot;distort:55:55:195:20:195:350:55:320\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;disc_box.jpg\\&quot;).image(transformation=[\\n  {&#039;width&#039;: 400, &#039;crop&#039;: \\&quot;scale\\&quot;},\\n  {&#039;overlay&#039;: \\&quot;movie_time\\&quot;, &#039;width&#039;: 300, &#039;effect&#039;: \\&quot;distort:55:55:195:20:195:350:55:320\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;disc_box.jpg&#039;))\\n\\t-&gt;resize(Resize::scale()-&gt;width(400))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;movie_time\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(300))\\n\\t-&gt;reshape(Reshape::distort([55, 55, 195, 20, 195, 350, 55, 320])))\\n\\t));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;disc_box.jpg&#039;))\\n\\t-&gt;resize(Resize::scale()-&gt;width(400))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;movie_time\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(300))\\n\\t-&gt;reshape(Reshape::distort([55, 55, 195, 20, 195, 350, 55, 320])))\\n\\t));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;disc_box.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;width\\&quot;=&gt;400, \\&quot;crop\\&quot;=&gt;\\&quot;scale\\&quot;), array(\\&quot;overlay\\&quot;=&gt;\\&quot;movie_time\\&quot;, \\&quot;width\\&quot;=&gt;300, \\&quot;effect\\&quot;=&gt;\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;disc_box.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;width\\&quot;=&gt;400, \\&quot;crop\\&quot;=&gt;\\&quot;scale\\&quot;),\\n  array(\\&quot;overlay\\&quot;=&gt;\\&quot;movie_time\\&quot;, \\&quot;width\\&quot;=&gt;300, \\&quot;effect\\&quot;=&gt;\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;)\\n  )))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(400).crop(\\&quot;scale\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(300).effect(\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;)).imageTag(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .width(400).crop(\\&quot;scale\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(300).effect(\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;)).imageTag(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;disc_box.jpg\\&quot;, transformation: [ {width: 400, crop: \\&quot;scale\\&quot;}, {overlay: \\&quot;movie_time\\&quot;, width: 300, effect: \\&quot;distort:55:55:195:20:195:350:55:320\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;disc_box.jpg\\&quot;, transformation: [\\n  {width: 400, crop: \\&quot;scale\\&quot;},\\n  {overlay: \\&quot;movie_time\\&quot;, width: 300, effect: \\&quot;distort:55:55:195:20:195:350:55:320\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(400).Crop(\\&quot;scale\\&quot;).Chain() .Overlay(new Layer().PublicId(\\&quot;movie_time\\&quot;)).Width(300).Effect(\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;)).BuildImageTag(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Width(400).Crop(\\&quot;scale\\&quot;).Chain()\\n  .Overlay(new Layer().PublicId(\\&quot;movie_time\\&quot;)).Width(300).Effect(\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;)).BuildImageTag(\\&quot;disc_box.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;disc_box.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.scale().width(400))\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;movie_time\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(300))\\n\\t.reshape(Reshape.distort([55, 55, 195, 20, 195, 350, 55, 320])))\\n\\t)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;disc_box.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.scale().width(400))\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;movie_time\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(300))\\n\\t.reshape(Reshape.distort([55, 55, 195, 20, 195, 350, 55, 320])))\\n\\t)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(400).setCrop(\\&quot;scale\\&quot;).chain() .setOverlay(\\&quot;movie_time\\&quot;).setWidth(300).setEffect(\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;)).generate(\\&quot;disc_box.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setWidth(400).setCrop(\\&quot;scale\\&quot;).chain()\\n  .setOverlay(\\&quot;movie_time\\&quot;).setWidth(300).setEffect(\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;)).generate(\\&quot;disc_box.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(400).crop(\\&quot;scale\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(300).effect(\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;)).generate(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .width(400).crop(\\&quot;scale\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;movie_time\\&quot;)).width(300).effect(\\&quot;distort:55:55:195:20:195:350:55:320\\&quot;)).generate(\\&quot;disc_box.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;disc_box.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.scale().width(400))\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;movie_time\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(300))\\n\\t.reshape(Reshape.distort([55, 55, 195, 20, 195, 350, 55, 320])))\\n\\t)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;disc_box.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.scale().width(400))\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;movie_time\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(300))\\n\\t.reshape(Reshape.distort([55, 55, 195, 20, 195, 350, 55, 320])))\\n\\t)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;disc_box.jpg\\&quot;)\\n\\t resize(Resize.scale() { width(400) })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;movie_time\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(300) })\\n\\t reshape(Reshape.distort(listOf(55, 55, 195, 20, 195, 350, 55, 320))) })\\n\\t })) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;disc_box.jpg\\&quot;)\\n\\t resize(Resize.scale() { width(400) })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;movie_time\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(300) })\\n\\t reshape(Reshape.distort(listOf(55, 55, 195, 20, 195, 350, 55, 320))) })\\n\\t })) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;disc_box.jpg\\&quot;, {transformation: [ {width: 400, crop: \\&quot;scale\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 300, effect: \\&quot;distort:55:55:195:20:195:350:55:320\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;disc_box.jpg\\&quot;, {transformation: [\\n  {width: 400, crop: \\&quot;scale\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;movie_time\\&quot;), width: 300, effect: \\&quot;distort:55:55:195:20:195:350:55:320\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;)\\n  .resize(scale().width(400))\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(300))\\n          .reshape(distort([55, 55, 195, 20, 195, 350, 55, 320]))\\n      )\\n    )\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;disc_box.jpg\\&quot;)\\n  .resize(scale().width(400))\\n  .overlay(\\n    source(\\n      image(\\&quot;movie_time\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(300))\\n          .reshape(distort([55, 55, 195, 20, 195, 350, 55, 320]))\\n      )\\n    )\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/w_400,c_scale\\\/l_movie_time,w_300,e_distort:55:55:195:20:195:350:55:320\\\/disc_box.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;width&quot;:&quot;400&quot;,&quot;crop_mode&quot;:&quot;scale&quot;},{&quot;overlay&quot;:&quot;movie_time&quot;,&quot;width&quot;:&quot;300&quot;,&quot;effect&quot;:&quot;distort:55:55:195:20:195:350:55:320&quot;}],&quot;transformation_string&quot;:&quot;w_400,c_scale\\\/l_movie_time,w_300,e_distort:55:55:195:20:195:350:55:320&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;disc_box.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_400,c_scale\/l_movie_time,w_300,e_distort:55:55:195:20:195:350:55:320\/disc_box.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_400,c_scale\/l_movie_time,w_300,e_distort:55:55:195:20:195:350:55:320\/disc_box.jpg\" alt=\"DVD cover with movie_time cover in correct perspective\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"400\" height=\"420\"\/><\/a><\/p>\n<h2>Transforming images with the shear effect<\/h2>\n<p>Cloudinary has also added support for another transformation <code>effect<\/code> called <code>shear<\/code> (<code>e_shear<\/code> in URLs). The shear effect skews the image along the x-axis and the y-axis according to a specified value in degrees. The parameter accepts two values separated by a colon (<code>:<\/code>), the first representing how much to skew the image on the x-axis and the second representing the amount of skew to apply on the y-axis. Negative values are allowed and skew the image in the opposite direction.<\/p>\n<p>For example, to shear the <code>movie_time<\/code> image by 40 degrees on the x-axis:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {effect: \\&quot;shear:40:0\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {effect: \\&quot;shear:40:0\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).reshape(shear(\\&quot;40.0\\&quot;, \\&quot;0.0\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).reshape(shear(\\&quot;40.0\\&quot;, \\&quot;0.0\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;movie_time.jpg\\&quot; &gt; &lt;Transformation effect=\\&quot;shear:40:0\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;movie_time.jpg\\&quot; &gt;\\n\\t&lt;Transformation effect=\\&quot;shear:40:0\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).reshape(shear(\\&quot;40.0\\&quot;, \\&quot;0.0\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).reshape(shear(\\&quot;40.0\\&quot;, \\&quot;0.0\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;movie_time.jpg\\&quot; &gt; &lt;cld-transformation effect=\\&quot;shear:40:0\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;movie_time.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation effect=\\&quot;shear:40:0\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).reshape(shear(\\&quot;40.0\\&quot;, \\&quot;0.0\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).reshape(shear(\\&quot;40.0\\&quot;, \\&quot;0.0\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;movie_time.jpg\\&quot; &gt; &lt;cl-transformation effect=\\&quot;shear:40:0\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;movie_time.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation effect=\\&quot;shear:40:0\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).reshape(shear(\\&quot;40.0\\&quot;, \\&quot;0.0\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).reshape(shear(\\&quot;40.0\\&quot;, \\&quot;0.0\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;movie_time.jpg&#039;, {effect: \\&quot;shear:40:0\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;movie_time.jpg&#039;, {effect: \\&quot;shear:40:0\\&quot;}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).image(effect=\\&quot;shear:40:0\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).image(effect=\\&quot;shear:40:0\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;movie_time.jpg&#039;))\\n\\t-&gt;reshape(Reshape::shear(40.0,0.0));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;movie_time.jpg&#039;))\\n\\t-&gt;reshape(Reshape::shear(40.0,0.0));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, array(\\&quot;effect\\&quot;=&gt;\\&quot;shear:40:0\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, array(\\&quot;effect\\&quot;=&gt;\\&quot;shear:40:0\\&quot;))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().effect(\\&quot;shear:40:0\\&quot;)).imageTag(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().effect(\\&quot;shear:40:0\\&quot;)).imageTag(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, effect: \\&quot;shear:40:0\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;movie_time.jpg\\&quot;, effect: \\&quot;shear:40:0\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Effect(\\&quot;shear:40:0\\&quot;)).BuildImageTag(\\&quot;movie_time.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Effect(\\&quot;shear:40:0\\&quot;)).BuildImageTag(\\&quot;movie_time.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.reshape(Reshape.shear(&#039;40.0&#039;,&#039;0.0&#039;)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.reshape(Reshape.shear(&#039;40.0&#039;,&#039;0.0&#039;)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setEffect(\\&quot;shear:40:0\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setEffect(\\&quot;shear:40:0\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().effect(\\&quot;shear:40:0\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().effect(\\&quot;shear:40:0\\&quot;)).generate(\\&quot;movie_time.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.reshape(Reshape.shear(&#039;40.0&#039;,&#039;0.0&#039;)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;movie_time.jpg&#039;).transformation(Transformation()\\n\\t.reshape(Reshape.shear(&#039;40.0&#039;,&#039;0.0&#039;)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;movie_time.jpg\\&quot;)\\n\\t reshape(Reshape.shear(40.0F,0.0F)) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;movie_time.jpg\\&quot;)\\n\\t reshape(Reshape.shear(40.0F,0.0F)) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {effect: \\&quot;shear:40:0\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;movie_time.jpg\\&quot;, {effect: \\&quot;shear:40:0\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).reshape(shear(\\&quot;40.0\\&quot;, \\&quot;0.0\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;movie_time.jpg\\&quot;).reshape(shear(\\&quot;40.0\\&quot;, \\&quot;0.0\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/e_shear:40:0\\\/movie_time.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;effect&quot;:&quot;shear:40:0&quot;}],&quot;transformation_string&quot;:&quot;e_shear:40:0&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;movie_time.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/e_shear:40:0\/movie_time.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/e_shear:40:0\/w_300\/movie_time.jpg\" alt=\"movie_time.jpg with 40 degree shearing on the x-axis\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"300\" height=\"193\"\/><\/a><\/p>\n<p>The shear effect can also be useful for transforming overlay images as in the following example of a yellow sports car overlaid on a white t-shirt.<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;yellow_sports_car.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;yellow_sports_car.png\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;yellow_sports_car.png\\&quot; &gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;yellow_sports_car.png\\&quot; &gt;\\n\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;yellow_sports_car.png\\&quot; &gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;yellow_sports_car.png\\&quot; &gt;\\n\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;yellow_sports_car.png\\&quot; &gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;yellow_sports_car.png\\&quot; &gt;\\n\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;yellow_sports_car.png&#039;).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;yellow_sports_car.png&#039;).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;).image()&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;).image()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;yellow_sports_car.png&#039;));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;yellow_sports_car.png&#039;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;yellow_sports_car.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;yellow_sports_car.png\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().imageTag(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().imageTag(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;yellow_sports_car.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;yellow_sports_car.png\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.BuildImageTag(\\&quot;yellow_sports_car.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.BuildImageTag(\\&quot;yellow_sports_car.png\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;yellow_sports_car.png&#039;).transformation(Transformation());&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;yellow_sports_car.png&#039;).transformation(Transformation());&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().generate(\\&quot;yellow_sports_car.png\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().generate(\\&quot;yellow_sports_car.png\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().generate(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().generate(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;yellow_sports_car.png&#039;).transformation(Transformation());&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;yellow_sports_car.png&#039;).transformation(Transformation());&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;yellow_sports_car.png\\&quot;) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;yellow_sports_car.png\\&quot;) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;yellow_sports_car.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;yellow_sports_car.png\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;yellow_sports_car.png\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/yellow_sports_car.png&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[],&quot;transformation_string&quot;:&quot;&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;yellow_sports_car.png&quot;,&quot;extension&quot;:&quot;png&quot;,&quot;format&quot;:&quot;png&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/yellow_sports_car.png\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_250\/yellow_sports_car.png\" alt=\"yellow sports car\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"250\" height=\"146\"\/><\/a><\/p>\n<p>The shear effect is added to the overlay to give the impression of the car accelerating forwards:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;blank_shirt.jpg\\&quot;, {overlay: \\&quot;yellow_sports_car\\&quot;, gravity: \\&quot;north\\&quot;, width: 400, x: 20, y: 120, effect: \\&quot;shear:20:0\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;blank_shirt.jpg\\&quot;, {overlay: \\&quot;yellow_sports_car\\&quot;, gravity: \\&quot;north\\&quot;, width: 400, x: 20, y: 120, effect: \\&quot;shear:20:0\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;yellow_sports_car\\&quot;).transformation(\\n      new Transformation()\\n        .resize(scale().width(400))\\n        .reshape(shear(\\&quot;20.0\\&quot;, \\&quot;0.0\\&quot;))\\n    )\\n  ).position(\\n    new Position()\\n      .gravity(compass(\\&quot;north\\&quot;))\\n      .offsetX(20)\\n      .offsetY(120)\\n  )\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;yellow_sports_car\\&quot;).transformation(\\n      new Transformation()\\n        .resize(scale().width(400))\\n        .reshape(shear(\\&quot;20.0\\&quot;, \\&quot;0.0\\&quot;))\\n    )\\n  ).position(\\n    new Position()\\n      .gravity(compass(\\&quot;north\\&quot;))\\n      .offsetX(20)\\n      .offsetY(120)\\n  )\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;blank_shirt.jpg\\&quot; &gt; &lt;Transformation overlay=\\&quot;yellow_sports_car\\&quot; gravity=\\&quot;north\\&quot; width=\\&quot;400\\&quot; x=\\&quot;20\\&quot; y=\\&quot;120\\&quot; effect=\\&quot;shear:20:0\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;blank_shirt.jpg\\&quot; &gt;\\n\\t&lt;Transformation overlay=\\&quot;yellow_sports_car\\&quot; gravity=\\&quot;north\\&quot; width=\\&quot;400\\&quot; x=\\&quot;20\\&quot; y=\\&quot;120\\&quot; effect=\\&quot;shear:20:0\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;yellow_sports_car\\&quot;).transformation(\\n      new Transformation()\\n        .resize(scale().width(400))\\n        .reshape(shear(\\&quot;20.0\\&quot;, \\&quot;0.0\\&quot;))\\n    )\\n  ).position(\\n    new Position()\\n      .gravity(compass(\\&quot;north\\&quot;))\\n      .offsetX(20)\\n      .offsetY(120)\\n  )\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;yellow_sports_car\\&quot;).transformation(\\n      new Transformation()\\n        .resize(scale().width(400))\\n        .reshape(shear(\\&quot;20.0\\&quot;, \\&quot;0.0\\&quot;))\\n    )\\n  ).position(\\n    new Position()\\n      .gravity(compass(\\&quot;north\\&quot;))\\n      .offsetX(20)\\n      .offsetY(120)\\n  )\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;blank_shirt.jpg\\&quot; &gt; &lt;cld-transformation :overlay=\\&quot;yellow_sports_car\\&quot; gravity=\\&quot;north\\&quot; width=\\&quot;400\\&quot; x=\\&quot;20\\&quot; y=\\&quot;120\\&quot; effect=\\&quot;shear:20:0\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;blank_shirt.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;yellow_sports_car\\&quot; gravity=\\&quot;north\\&quot; width=\\&quot;400\\&quot; x=\\&quot;20\\&quot; y=\\&quot;120\\&quot; effect=\\&quot;shear:20:0\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;yellow_sports_car\\&quot;).transformation(\\n      new Transformation()\\n        .resize(scale().width(400))\\n        .reshape(shear(\\&quot;20.0\\&quot;, \\&quot;0.0\\&quot;))\\n    )\\n  ).position(\\n    new Position()\\n      .gravity(compass(\\&quot;north\\&quot;))\\n      .offsetX(20)\\n      .offsetY(120)\\n  )\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;yellow_sports_car\\&quot;).transformation(\\n      new Transformation()\\n        .resize(scale().width(400))\\n        .reshape(shear(\\&quot;20.0\\&quot;, \\&quot;0.0\\&quot;))\\n    )\\n  ).position(\\n    new Position()\\n      .gravity(compass(\\&quot;north\\&quot;))\\n      .offsetX(20)\\n      .offsetY(120)\\n  )\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;blank_shirt.jpg\\&quot; &gt; &lt;cl-transformation overlay=\\&quot;yellow_sports_car\\&quot; gravity=\\&quot;north\\&quot; width=\\&quot;400\\&quot; x=\\&quot;20\\&quot; y=\\&quot;120\\&quot; effect=\\&quot;shear:20:0\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;blank_shirt.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation overlay=\\&quot;yellow_sports_car\\&quot; gravity=\\&quot;north\\&quot; width=\\&quot;400\\&quot; x=\\&quot;20\\&quot; y=\\&quot;120\\&quot; effect=\\&quot;shear:20:0\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;yellow_sports_car\\&quot;).transformation(\\n      new Transformation()\\n        .resize(scale().width(400))\\n        .reshape(shear(\\&quot;20.0\\&quot;, \\&quot;0.0\\&quot;))\\n    )\\n  ).position(\\n    new Position()\\n      .gravity(compass(\\&quot;north\\&quot;))\\n      .offsetX(20)\\n      .offsetY(120)\\n  )\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;yellow_sports_car\\&quot;).transformation(\\n      new Transformation()\\n        .resize(scale().width(400))\\n        .reshape(shear(\\&quot;20.0\\&quot;, \\&quot;0.0\\&quot;))\\n    )\\n  ).position(\\n    new Position()\\n      .gravity(compass(\\&quot;north\\&quot;))\\n      .offsetX(20)\\n      .offsetY(120)\\n  )\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;blank_shirt.jpg&#039;, {overlay: new cloudinary.Layer().publicId(\\&quot;yellow_sports_car\\&quot;), gravity: \\&quot;north\\&quot;, width: 400, x: 20, y: 120, effect: \\&quot;shear:20:0\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;blank_shirt.jpg&#039;, {overlay: new cloudinary.Layer().publicId(\\&quot;yellow_sports_car\\&quot;), gravity: \\&quot;north\\&quot;, width: 400, x: 20, y: 120, effect: \\&quot;shear:20:0\\&quot;}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).image(overlay=\\&quot;yellow_sports_car\\&quot;, gravity=\\&quot;north\\&quot;, width=400, x=20, y=120, effect=\\&quot;shear:20:0\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).image(overlay=\\&quot;yellow_sports_car\\&quot;, gravity=\\&quot;north\\&quot;, width=400, x=20, y=120, effect=\\&quot;shear:20:0\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;blank_shirt.jpg&#039;))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;yellow_sports_car\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(400))\\n\\t-&gt;reshape(Reshape::shear(20.0,0.0)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::north()))\\n-&gt;offsetX(20)\\n-&gt;offsetY(120))\\n\\t);&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;blank_shirt.jpg&#039;))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;yellow_sports_car\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(400))\\n\\t-&gt;reshape(Reshape::shear(20.0,0.0)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::north()))\\n-&gt;offsetX(20)\\n-&gt;offsetY(120))\\n\\t);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;blank_shirt.jpg\\&quot;, array(\\&quot;overlay\\&quot;=&gt;\\&quot;yellow_sports_car\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;north\\&quot;, \\&quot;width\\&quot;=&gt;400, \\&quot;x\\&quot;=&gt;20, \\&quot;y\\&quot;=&gt;120, \\&quot;effect\\&quot;=&gt;\\&quot;shear:20:0\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;blank_shirt.jpg\\&quot;, array(\\&quot;overlay\\&quot;=&gt;\\&quot;yellow_sports_car\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;north\\&quot;, \\&quot;width\\&quot;=&gt;400, \\&quot;x\\&quot;=&gt;20, \\&quot;y\\&quot;=&gt;120, \\&quot;effect\\&quot;=&gt;\\&quot;shear:20:0\\&quot;))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().overlay(new Layer().publicId(\\&quot;yellow_sports_car\\&quot;)).gravity(\\&quot;north\\&quot;).width(400).x(20).y(120).effect(\\&quot;shear:20:0\\&quot;)).imageTag(\\&quot;blank_shirt.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().overlay(new Layer().publicId(\\&quot;yellow_sports_car\\&quot;)).gravity(\\&quot;north\\&quot;).width(400).x(20).y(120).effect(\\&quot;shear:20:0\\&quot;)).imageTag(\\&quot;blank_shirt.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;blank_shirt.jpg\\&quot;, overlay: \\&quot;yellow_sports_car\\&quot;, gravity: \\&quot;north\\&quot;, width: 400, x: 20, y: 120, effect: \\&quot;shear:20:0\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;blank_shirt.jpg\\&quot;, overlay: \\&quot;yellow_sports_car\\&quot;, gravity: \\&quot;north\\&quot;, width: 400, x: 20, y: 120, effect: \\&quot;shear:20:0\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Overlay(new Layer().PublicId(\\&quot;yellow_sports_car\\&quot;)).Gravity(\\&quot;north\\&quot;).Width(400).X(20).Y(120).Effect(\\&quot;shear:20:0\\&quot;)).BuildImageTag(\\&quot;blank_shirt.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Overlay(new Layer().PublicId(\\&quot;yellow_sports_car\\&quot;)).Gravity(\\&quot;north\\&quot;).Width(400).X(20).Y(120).Effect(\\&quot;shear:20:0\\&quot;)).BuildImageTag(\\&quot;blank_shirt.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;blank_shirt.jpg&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;yellow_sports_car\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(400))\\n\\t.reshape(Reshape.shear(&#039;20.0&#039;,&#039;0.0&#039;)))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n.offsetX(20)\\n.offsetY(120))\\n\\t));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;blank_shirt.jpg&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;yellow_sports_car\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(400))\\n\\t.reshape(Reshape.shear(&#039;20.0&#039;,&#039;0.0&#039;)))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n.offsetX(20)\\n.offsetY(120))\\n\\t));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setOverlay(\\&quot;yellow_sports_car\\&quot;).setGravity(\\&quot;north\\&quot;).setWidth(400).setX(20).setY(120).setEffect(\\&quot;shear:20:0\\&quot;)).generate(\\&quot;blank_shirt.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setOverlay(\\&quot;yellow_sports_car\\&quot;).setGravity(\\&quot;north\\&quot;).setWidth(400).setX(20).setY(120).setEffect(\\&quot;shear:20:0\\&quot;)).generate(\\&quot;blank_shirt.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().overlay(new Layer().publicId(\\&quot;yellow_sports_car\\&quot;)).gravity(\\&quot;north\\&quot;).width(400).x(20).y(120).effect(\\&quot;shear:20:0\\&quot;)).generate(\\&quot;blank_shirt.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().overlay(new Layer().publicId(\\&quot;yellow_sports_car\\&quot;)).gravity(\\&quot;north\\&quot;).width(400).x(20).y(120).effect(\\&quot;shear:20:0\\&quot;)).generate(\\&quot;blank_shirt.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;blank_shirt.jpg&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;yellow_sports_car\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(400))\\n\\t.reshape(Reshape.shear(&#039;20.0&#039;,&#039;0.0&#039;)))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n.offsetX(20)\\n.offsetY(120))\\n\\t));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;blank_shirt.jpg&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;yellow_sports_car\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(400))\\n\\t.reshape(Reshape.shear(&#039;20.0&#039;,&#039;0.0&#039;)))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n.offsetX(20)\\n.offsetY(120))\\n\\t));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;blank_shirt.jpg\\&quot;)\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;yellow_sports_car\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(400) })\\n\\t reshape(Reshape.shear(20.0F,0.0F)) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n offsetX(20)\\n offsetY(120) })\\n\\t }) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;blank_shirt.jpg\\&quot;)\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;yellow_sports_car\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(400) })\\n\\t reshape(Reshape.shear(20.0F,0.0F)) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n offsetX(20)\\n offsetY(120) })\\n\\t }) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;blank_shirt.jpg\\&quot;, {overlay: new cloudinary.Layer().publicId(\\&quot;yellow_sports_car\\&quot;), gravity: \\&quot;north\\&quot;, width: 400, x: 20, y: 120, effect: \\&quot;shear:20:0\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;blank_shirt.jpg\\&quot;, {overlay: new cloudinary.Layer().publicId(\\&quot;yellow_sports_car\\&quot;), gravity: \\&quot;north\\&quot;, width: 400, x: 20, y: 120, effect: \\&quot;shear:20:0\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;yellow_sports_car\\&quot;).transformation(\\n      new Transformation()\\n        .resize(scale().width(400))\\n        .reshape(shear(\\&quot;20.0\\&quot;, \\&quot;0.0\\&quot;))\\n    )\\n  ).position(\\n    new Position()\\n      .gravity(compass(\\&quot;north\\&quot;))\\n      .offsetX(20)\\n      .offsetY(120)\\n  )\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;blank_shirt.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;yellow_sports_car\\&quot;).transformation(\\n      new Transformation()\\n        .resize(scale().width(400))\\n        .reshape(shear(\\&quot;20.0\\&quot;, \\&quot;0.0\\&quot;))\\n    )\\n  ).position(\\n    new Position()\\n      .gravity(compass(\\&quot;north\\&quot;))\\n      .offsetX(20)\\n      .offsetY(120)\\n  )\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/l_yellow_sports_car,g_north,w_400,x_20,y_120,e_shear:20:0\\\/blank_shirt.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;overlay&quot;:&quot;yellow_sports_car&quot;,&quot;gravity&quot;:&quot;north&quot;,&quot;width&quot;:&quot;400&quot;,&quot;x&quot;:&quot;20&quot;,&quot;y&quot;:&quot;120&quot;,&quot;effect&quot;:&quot;shear:20:0&quot;}],&quot;transformation_string&quot;:&quot;l_yellow_sports_car,g_north,w_400,x_20,y_120,e_shear:20:0&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;blank_shirt.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/l_yellow_sports_car,g_north,w_400,x_20,y_120,e_shear:20:0\/blank_shirt.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/l_yellow_sports_car,g_north,w_400,x_20,y_120,e_shear:20:0\/w_400\/blank_shirt.jpg\" alt=\"t-shirt with car \u2018sheared\u2019 by 20 degrees\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"400\" height=\"442\"\/><\/a><\/p>\n<h2>Animated GIF example with the distort effect<\/h2>\n<p>You can easily mix and match the distort effect with other image transformation capabilities supported by Cloudinary, such as animated GIF generation for example. The following example showcases a Ruby script that creates a very simple animated GIF of spinning text consisting of 20 individual frames. The script calculates how to modify the text string for each frame with the <code>distort<\/code> effect parameter in order to give the spinning text a 3D perspective. Each frame is then uploaded to Cloudinary, where each individual image (frame) is constructed from:<\/p>\n<ul>\n<li>A previously uploaded blank image used as a base image.<\/li>\n<li>A \u201cdistorted\u201d text string overlaid over the base image.<\/li>\n<\/ul>\n<p>Each frame is a therefore a combination of the base image together with an overlay of a slightly modified version of the text string.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">  coordinates = {}\n  (<span class=\"hljs-number\">0.<\/span><span class=\"hljs-number\">.10<\/span>).each <span class=\"hljs-keyword\">do<\/span> |frame|\n    x_offset = frame * <span class=\"hljs-number\">10<\/span>\n    y_back   = <span class=\"hljs-number\">10<\/span>*(frame &lt; <span class=\"hljs-number\">5<\/span> ? -frame : frame - <span class=\"hljs-number\">10<\/span>)\n    y_front  = y_back*<span class=\"hljs-number\">2<\/span>\n\n    front    = &#91; x_offset, y_front, \n                 <span class=\"hljs-number\">100<\/span> - x_offset, -y_back,\n                 <span class=\"hljs-number\">100<\/span> - x_offset, <span class=\"hljs-number\">100<\/span>+y_back,\n                 x_offset, <span class=\"hljs-number\">100<\/span> - y_front ]\n            .map { |i| <span class=\"hljs-string\">\"#{i}p\"<\/span> }.join(<span class=\"hljs-string\">\":\"<\/span>)\n\n    back     = &#91; x_offset, -y_back, \n                 <span class=\"hljs-number\">100<\/span> - x_offset, y_back*<span class=\"hljs-number\">2<\/span>,\n                 <span class=\"hljs-number\">100<\/span> - x_offset, <span class=\"hljs-number\">100<\/span> - y_back*<span class=\"hljs-number\">2<\/span>,\n                 x_offset, <span class=\"hljs-number\">100<\/span> + y_back ]\n            .map { |i| <span class=\"hljs-string\">\"#{i}p\"<\/span> }.join(<span class=\"hljs-string\">\":\"<\/span>)\n\n    coordinates&#91;frame]      = front\n    coordinates&#91;<span class=\"hljs-number\">20<\/span> - frame] = back\n  end\n\n  (<span class=\"hljs-number\">0.<\/span><span class=\"hljs-number\">.19<\/span>).each <span class=\"hljs-keyword\">do<\/span> |frame|\n    x_offset = frame &lt; <span class=\"hljs-number\">10<\/span> ? frame*<span class=\"hljs-number\">10<\/span> : <span class=\"hljs-number\">200<\/span> - frame*<span class=\"hljs-number\">10<\/span>\n    myurl    = Cloudinary::Utils.cloudinary_url(\n      <span class=\"hljs-string\">\"base.png\"<\/span>,\n      :<span class=\"hljs-function\"><span class=\"hljs-params\">transformation<\/span> =&gt;<\/span> &#91;\n        { :<span class=\"hljs-function\"><span class=\"hljs-params\">width<\/span> =&gt;<\/span> <span class=\"hljs-number\">510<\/span>, :<span class=\"hljs-function\"><span class=\"hljs-params\">height<\/span> =&gt;<\/span> <span class=\"hljs-number\">300<\/span>, :<span class=\"hljs-function\"><span class=\"hljs-params\">crop<\/span> =&gt;<\/span> <span class=\"hljs-string\">\"scale\"<\/span>,\n          :<span class=\"hljs-function\"><span class=\"hljs-params\">background<\/span> =&gt;<\/span> <span class=\"hljs-string\">\"white\"<\/span> },\n        { :<span class=\"hljs-function\"><span class=\"hljs-params\">overlay<\/span> =&gt;<\/span> <span class=\"hljs-string\">\"text:roboto_150_bold:Spinning text\"<\/span>, \n          :<span class=\"hljs-function\"><span class=\"hljs-params\">color<\/span> =&gt;<\/span> <span class=\"hljs-string\">\"#0071BA\"<\/span>, :<span class=\"hljs-function\"><span class=\"hljs-params\">width<\/span> =&gt;<\/span> <span class=\"hljs-number\">500<\/span>, :<span class=\"hljs-function\"><span class=\"hljs-params\">height<\/span> =&gt;<\/span> <span class=\"hljs-number\">100<\/span> },\n        { :<span class=\"hljs-function\"><span class=\"hljs-params\">effect<\/span> =&gt;<\/span> <span class=\"hljs-string\">\"distort:#{coordinates&#91;frame]}\"<\/span> },\n        { :<span class=\"hljs-function\"><span class=\"hljs-params\">crop<\/span> =&gt;<\/span> <span class=\"hljs-string\">\"crop\"<\/span>, <span class=\"hljs-attr\">gravity<\/span>: <span class=\"hljs-string\">\"center\"<\/span>, \n          :<span class=\"hljs-function\"><span class=\"hljs-params\">width<\/span> =&gt;<\/span> ((<span class=\"hljs-number\">500<\/span>*(<span class=\"hljs-number\">100<\/span><span class=\"hljs-number\">-2<\/span>*x_offset)\/<span class=\"hljs-number\">100.0<\/span>).abs.to_i), \n          :<span class=\"hljs-function\"><span class=\"hljs-params\">height<\/span> =&gt;<\/span> <span class=\"hljs-number\">300<\/span> },\n        { :<span class=\"hljs-function\"><span class=\"hljs-params\">flags<\/span> =&gt;<\/span> <span class=\"hljs-string\">\"layer_apply\"<\/span> }])\n\n    <span class=\"hljs-attr\">Cloudinary<\/span>::Uploader.upload(\n      myurl,\n      :<span class=\"hljs-function\"><span class=\"hljs-params\">public_id<\/span> =&gt;<\/span> <span class=\"hljs-string\">\"spinning_text_#{'%02d' % frame}\"<\/span>,\n      :<span class=\"hljs-function\"><span class=\"hljs-params\">tags<\/span>      =&gt;<\/span> <span class=\"hljs-string\">\"spinning_text\"<\/span>\n    ) <span class=\"hljs-keyword\">if<\/span> x_offset != <span class=\"hljs-number\">50<\/span>\n  end\n\n  <span class=\"hljs-attr\">Cloudinary<\/span>::Uploader.multi(<span class=\"hljs-string\">\"spinning_text\"<\/span>, :<span class=\"hljs-function\"><span class=\"hljs-params\">delay<\/span> =&gt;<\/span> <span class=\"hljs-number\">100<\/span>)\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>After the script is run, the images are uploaded, and the animated GIF is created, the final file is ready for delivery:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;spinning_text.gif\\&quot;, {delay: \\&quot;100\\&quot;, type: \\&quot;multi\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;spinning_text.gif\\&quot;, {delay: \\&quot;100\\&quot;, type: \\&quot;multi\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;spinning_text.gif\\&quot;)\\n  .animated(edit().delay(100))\\n  .setDeliveryType(\\&quot;multi\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;spinning_text.gif\\&quot;)\\n  .animated(edit().delay(100))\\n  .setDeliveryType(\\&quot;multi\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;spinning_text.gif\\&quot; type=\\&quot;multi\\&quot;&gt; &lt;Transformation delay=\\&quot;100\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;spinning_text.gif\\&quot; type=\\&quot;multi\\&quot;&gt;\\n\\t&lt;Transformation delay=\\&quot;100\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;spinning_text.gif\\&quot;)\\n  .animated(edit().delay(100))\\n  .setDeliveryType(\\&quot;multi\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;spinning_text.gif\\&quot;)\\n  .animated(edit().delay(100))\\n  .setDeliveryType(\\&quot;multi\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;spinning_text.gif\\&quot; type=\\&quot;multi\\&quot;&gt; &lt;cld-transformation delay=\\&quot;100\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;spinning_text.gif\\&quot; type=\\&quot;multi\\&quot;&gt;\\n\\t&lt;cld-transformation delay=\\&quot;100\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;spinning_text.gif\\&quot;)\\n  .animated(edit().delay(100))\\n  .setDeliveryType(\\&quot;multi\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;spinning_text.gif\\&quot;)\\n  .animated(edit().delay(100))\\n  .setDeliveryType(\\&quot;multi\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;spinning_text.gif\\&quot; type=\\&quot;multi\\&quot;&gt; &lt;cl-transformation delay=\\&quot;100\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;spinning_text.gif\\&quot; type=\\&quot;multi\\&quot;&gt;\\n\\t&lt;cl-transformation delay=\\&quot;100\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;spinning_text.gif\\&quot;)\\n  .animated(edit().delay(100))\\n  .setDeliveryType(\\&quot;multi\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;spinning_text.gif\\&quot;)\\n  .animated(edit().delay(100))\\n  .setDeliveryType(\\&quot;multi\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;spinning_text.gif&#039;, {delay: \\&quot;100\\&quot;, type: \\&quot;multi\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;spinning_text.gif&#039;, {delay: \\&quot;100\\&quot;, type: \\&quot;multi\\&quot;}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;spinning_text.gif\\&quot;).image(delay=\\&quot;100\\&quot;, type=\\&quot;multi\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;spinning_text.gif\\&quot;).image(delay=\\&quot;100\\&quot;, type=\\&quot;multi\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;spinning_text.gif&#039;))\\n\\t-&gt;animated(Animated::edit()-&gt;delay(100))\\n\\t-&gt;deliveryType(\\&quot;multi\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;spinning_text.gif&#039;))\\n\\t-&gt;animated(Animated::edit()-&gt;delay(100))\\n\\t-&gt;deliveryType(\\&quot;multi\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;spinning_text.gif\\&quot;, array(\\&quot;delay\\&quot;=&gt;\\&quot;100\\&quot;, \\&quot;type\\&quot;=&gt;\\&quot;multi\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;spinning_text.gif\\&quot;, array(\\&quot;delay\\&quot;=&gt;\\&quot;100\\&quot;, \\&quot;type\\&quot;=&gt;\\&quot;multi\\&quot;))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().delay(\\&quot;100\\&quot;)).type(\\&quot;multi\\&quot;).imageTag(\\&quot;spinning_text.gif\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().delay(\\&quot;100\\&quot;)).type(\\&quot;multi\\&quot;).imageTag(\\&quot;spinning_text.gif\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;spinning_text.gif\\&quot;, delay: \\&quot;100\\&quot;, type: \\&quot;multi\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;spinning_text.gif\\&quot;, delay: \\&quot;100\\&quot;, type: \\&quot;multi\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Delay(\\&quot;100\\&quot;)).Action(\\&quot;multi\\&quot;).BuildImageTag(\\&quot;spinning_text.gif\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Delay(\\&quot;100\\&quot;)).Action(\\&quot;multi\\&quot;).BuildImageTag(\\&quot;spinning_text.gif\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;spinning_text.gif&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;dl_100\\&quot;)\\n\\t.setDeliveryType(\\&quot;multi\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;spinning_text.gif&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;dl_100\\&quot;)\\n\\t.setDeliveryType(\\&quot;multi\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setType( \\&quot;multi\\&quot;).setTransformation(CLDTransformation().setDelay(\\&quot;100\\&quot;)).generate(\\&quot;spinning_text.gif\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setType( \\&quot;multi\\&quot;).setTransformation(CLDTransformation().setDelay(\\&quot;100\\&quot;)).generate(\\&quot;spinning_text.gif\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().delay(\\&quot;100\\&quot;)).type(\\&quot;multi\\&quot;).generate(\\&quot;spinning_text.gif\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().delay(\\&quot;100\\&quot;)).type(\\&quot;multi\\&quot;).generate(\\&quot;spinning_text.gif\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;spinning_text.gif&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;dl_100\\&quot;)\\n\\t.setDeliveryType(\\&quot;multi\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;spinning_text.gif&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;dl_100\\&quot;)\\n\\t.setDeliveryType(\\&quot;multi\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;spinning_text.gif\\&quot;)\\n\\t animated(Animated.edit() { delay(100) })\\n\\t deliveryType(\\&quot;multi\\&quot;) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;spinning_text.gif\\&quot;)\\n\\t animated(Animated.edit() { delay(100) })\\n\\t deliveryType(\\&quot;multi\\&quot;) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;spinning_text.gif\\&quot;, {delay: \\&quot;100\\&quot;, type: \\&quot;multi\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;spinning_text.gif\\&quot;, {delay: \\&quot;100\\&quot;, type: \\&quot;multi\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;spinning_text.gif\\&quot;)\\n  .animated(edit().delay(100))\\n  .setDeliveryType(\\&quot;multi\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;spinning_text.gif\\&quot;)\\n  .animated(edit().delay(100))\\n  .setDeliveryType(\\&quot;multi\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/multi\\\/dl_100\\\/spinning_text.gif&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;multi&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;delay&quot;:&quot;100&quot;}],&quot;transformation_string&quot;:&quot;dl_100&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;spinning_text.gif&quot;,&quot;extension&quot;:&quot;gif&quot;,&quot;format&quot;:&quot;gif&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/multi\/dl_100\/spinning_text.gif\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/multi\/dl_100\/spinning_text.gif\" alt=\"spinning_text.gif created from all images with the spinning_text tag\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"510\" height=\"300\"\/><\/a><\/p>\n<p>Pretty cool use for the distort effect, right?<\/p>\n<h2>Summary<\/h2>\n<p>You can do some pretty cool things with image distortion, and in this post we showed you how Cloudinary can do this easily in the cloud using simple dynamic transformation parameters and delivery URLs.<\/p>\n<p>\nIt&#8217;s important to remember that image distortion isn&#8217;t just a tool for graphic design but also a factor in photography. Understanding the effects of different lenses and the ways to control distortion through various software enhances the overall versatility and effectiveness of visual design and photography.\n<\/p>\n<p>Distort and shear are the two new Cloudinary effects that are especially useful for the exact positioning of overlays and giving images a 3D perspective.<\/p>\n<p>These features are available for use with all Cloudinary accounts, including the <a href=\"https:\/\/cloudinary.com\/users\/register_free\">free tier<\/a>.<\/p>\n<p>Want to give it a spin\u2026? Add a comment below with your own creation using distort, shear and other Cloudinary transformation capabilities. We\u2019ll pick the coolest ones and send over a bunch of Cloudinary swag!<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21337,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[91,92,165,176,183,214,229,257],"class_list":["post-21336","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-django","tag-dotnet","tag-image-transformation","tag-java","tag-jquery","tag-node","tag-php","tag-ruby-on-rails"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How To Distort Images Dynamically to Fit your Graphic Design<\/title>\n<meta name=\"description\" content=\"Learn how to dynamically distort images using the distort and shear effects for precise and dynamic control over image positioning and shaping\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How To Distort Images Dynamically to Fit your Graphic Design\" \/>\n<meta property=\"og:description\" content=\"Learn how to dynamically distort images using the distort and shear effects for precise and dynamic control over image positioning and shaping\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-12-10T11:57:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-22T22:52:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649719047\/Web_Assets\/blog\/22_distort_images_dynamically\/22_distort_images_dynamically-jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1540\" \/>\n\t<meta property=\"og:image:height\" content=\"847\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"How To Distort Images Dynamically to Fit your Graphic Design\",\"datePublished\":\"2015-12-10T11:57:48+00:00\",\"dateModified\":\"2025-02-22T22:52:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design\"},\"wordCount\":10,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719047\/Web_Assets\/blog\/22_distort_images_dynamically\/22_distort_images_dynamically.jpg?_i=AA\",\"keywords\":[\"Django\",\"DotNet\",\"Image Transformation\",\"Java\",\"jQuery\",\"Node\",\"PHP\",\"Ruby on Rails\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2015\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design\",\"url\":\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design\",\"name\":\"How To Distort Images Dynamically to Fit your Graphic Design\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719047\/Web_Assets\/blog\/22_distort_images_dynamically\/22_distort_images_dynamically.jpg?_i=AA\",\"datePublished\":\"2015-12-10T11:57:48+00:00\",\"dateModified\":\"2025-02-22T22:52:30+00:00\",\"description\":\"Learn how to dynamically distort images using the distort and shear effects for precise and dynamic control over image positioning and shaping\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719047\/Web_Assets\/blog\/22_distort_images_dynamically\/22_distort_images_dynamically.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719047\/Web_Assets\/blog\/22_distort_images_dynamically\/22_distort_images_dynamically.jpg?_i=AA\",\"width\":1540,\"height\":847},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How To Distort Images Dynamically to Fit your Graphic Design\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How To Distort Images Dynamically to Fit your Graphic Design","description":"Learn how to dynamically distort images using the distort and shear effects for precise and dynamic control over image positioning and shaping","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design","og_locale":"en_US","og_type":"article","og_title":"How To Distort Images Dynamically to Fit your Graphic Design","og_description":"Learn how to dynamically distort images using the distort and shear effects for precise and dynamic control over image positioning and shaping","og_url":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design","og_site_name":"Cloudinary Blog","article_published_time":"2015-12-10T11:57:48+00:00","article_modified_time":"2025-02-22T22:52:30+00:00","og_image":[{"width":1540,"height":847,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649719047\/Web_Assets\/blog\/22_distort_images_dynamically\/22_distort_images_dynamically-jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design"},"author":{"name":"","@id":""},"headline":"How To Distort Images Dynamically to Fit your Graphic Design","datePublished":"2015-12-10T11:57:48+00:00","dateModified":"2025-02-22T22:52:30+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design"},"wordCount":10,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719047\/Web_Assets\/blog\/22_distort_images_dynamically\/22_distort_images_dynamically.jpg?_i=AA","keywords":["Django","DotNet","Image Transformation","Java","jQuery","Node","PHP","Ruby on Rails"],"inLanguage":"en-US","copyrightYear":"2015","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design","url":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design","name":"How To Distort Images Dynamically to Fit your Graphic Design","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719047\/Web_Assets\/blog\/22_distort_images_dynamically\/22_distort_images_dynamically.jpg?_i=AA","datePublished":"2015-12-10T11:57:48+00:00","dateModified":"2025-02-22T22:52:30+00:00","description":"Learn how to dynamically distort images using the distort and shear effects for precise and dynamic control over image positioning and shaping","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719047\/Web_Assets\/blog\/22_distort_images_dynamically\/22_distort_images_dynamically.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719047\/Web_Assets\/blog\/22_distort_images_dynamically\/22_distort_images_dynamically.jpg?_i=AA","width":1540,"height":847},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/how_to_dynamically_distort_images_to_fit_your_graphic_design#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How To Distort Images Dynamically to Fit your Graphic Design"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719047\/Web_Assets\/blog\/22_distort_images_dynamically\/22_distort_images_dynamically.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=21336"}],"version-history":[{"count":6,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21336\/revisions"}],"predecessor-version":[{"id":36957,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21336\/revisions\/36957"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21337"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}