{"id":21458,"date":"2017-01-18T14:04:05","date_gmt":"2017-01-18T14:04:05","guid":{"rendered":"http:\/\/new_angular_sdk_for_image_management_more_than_meets_the_eye"},"modified":"2024-06-05T16:19:18","modified_gmt":"2024-06-05T23:19:18","slug":"new_angular_sdk_for_image_management_more_than_meets_the_eye","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye","title":{"rendered":"New Angular SDK for image management &#8211; More than meets the eye"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p><a href=\"http:\/\/www.imdb.com\/title\/tt0094142\/quotes?item=qt3010733\">The night was moist<\/a>. Angular2 had just been released and developers all over the world were asking for an integrated image management solution.<\/p>\n<p>Cloudinary heeded the call and is proud to present the new Angular2 SDK, providing directives for displaying and transforming images and video with an API.<\/p>\n<h2>Wait, what\u2019s Cloudinary?<\/h2>\n<p>Cloudinary is an end-to-end image and video management solution for your website and mobile apps. Cloudinary covers everything from media uploads and storage to transformations, optimizations, and delivery.<\/p>\n<p>You can easily upload images and video to the cloud and automatically perform smart transformations without installing any complex software. You can also integrate a Facebook or Twitter profile image in a snap, in any dimension and style to match your website\u2019s graphics requirements. All your media files are seamlessly delivered through a fast CDN, optimized and using industry best practices.<\/p>\n<p>For more information visit our <a href=\"https:\/\/cloudinary.com\/products\/image_video_technology_platform\">Features Page<\/a>.<\/p>\n<h2>Why do I need an SDK?<\/h2>\n<p>Cloudinary provides RESTful APIs that can be easily integrated with any Web development framework, but the new Angular SDK makes it easier to consume Cloudinary\u2019s service in your Angular2 app.<\/p>\n<p>Let\u2019s see how this is done by transforming Angular\u2019s logo:<\/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;angular_logo\\&quot;, {transformation: [ {effect: \\&quot;pixelate:8\\&quot;, gravity: \\&quot;north\\&quot;, height: \\&quot;0.5\\&quot;, overlay: \\&quot;angular_logo\\&quot;, width: \\&quot;1.0\\&quot;, crop: \\&quot;crop\\&quot;}, {flags: \\&quot;layer_apply\\&quot;, gravity: \\&quot;north\\&quot;}, {width: 180, crop: \\&quot;fit\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;angular_logo\\&quot;, {transformation: [\\n  {effect: \\&quot;pixelate:8\\&quot;, gravity: \\&quot;north\\&quot;, height: \\&quot;0.5\\&quot;, overlay: \\&quot;angular_logo\\&quot;, width: \\&quot;1.0\\&quot;, crop: \\&quot;crop\\&quot;},\\n  {flags: \\&quot;layer_apply\\&quot;, gravity: \\&quot;north\\&quot;},\\n  {width: 180, crop: \\&quot;fit\\&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;angular_logo\\&quot;)\\n  .overlay(\\n    source(\\n      image(\\&quot;angular_logo\\&quot;).transformation(\\n        new Transformation()\\n          .resize(crop().width(\\&quot;1.0\\&quot;).height(0.5).gravity(compass(\\&quot;north\\&quot;)))\\n          .effect(pixelate().squareSize(8))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;north\\&quot;)))\\n  )\\n  .resize(fit().width(180));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;angular_logo\\&quot;)\\n  .overlay(\\n    source(\\n      image(\\&quot;angular_logo\\&quot;).transformation(\\n        new Transformation()\\n          .resize(crop().width(\\&quot;1.0\\&quot;).height(0.5).gravity(compass(\\&quot;north\\&quot;)))\\n          .effect(pixelate().squareSize(8))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;north\\&quot;)))\\n  )\\n  .resize(fit().width(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;angular_logo\\&quot; &gt; &lt;Transformation effect=\\&quot;pixelate:8\\&quot; gravity=\\&quot;north\\&quot; height=\\&quot;0.5\\&quot; overlay=\\&quot;angular_logo\\&quot; width=\\&quot;1.0\\&quot; crop=\\&quot;crop\\&quot; \\\/&gt; &lt;Transformation flags=\\&quot;layer_apply\\&quot; gravity=\\&quot;north\\&quot; \\\/&gt; &lt;Transformation width=\\&quot;180\\&quot; crop=\\&quot;fit\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;angular_logo\\&quot; &gt;\\n\\t&lt;Transformation effect=\\&quot;pixelate:8\\&quot; gravity=\\&quot;north\\&quot; height=\\&quot;0.5\\&quot; overlay=\\&quot;angular_logo\\&quot; width=\\&quot;1.0\\&quot; crop=\\&quot;crop\\&quot; \\\/&gt;\\n\\t&lt;Transformation flags=\\&quot;layer_apply\\&quot; gravity=\\&quot;north\\&quot; \\\/&gt;\\n\\t&lt;Transformation width=\\&quot;180\\&quot; crop=\\&quot;fit\\&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;angular_logo\\&quot;)\\n  .overlay(\\n    source(\\n      image(\\&quot;angular_logo\\&quot;).transformation(\\n        new Transformation()\\n          .resize(crop().width(\\&quot;1.0\\&quot;).height(0.5).gravity(compass(\\&quot;north\\&quot;)))\\n          .effect(pixelate().squareSize(8))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;north\\&quot;)))\\n  )\\n  .resize(fit().width(180));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;angular_logo\\&quot;)\\n  .overlay(\\n    source(\\n      image(\\&quot;angular_logo\\&quot;).transformation(\\n        new Transformation()\\n          .resize(crop().width(\\&quot;1.0\\&quot;).height(0.5).gravity(compass(\\&quot;north\\&quot;)))\\n          .effect(pixelate().squareSize(8))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;north\\&quot;)))\\n  )\\n  .resize(fit().width(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;angular_logo\\&quot; &gt; &lt;cld-transformation effect=\\&quot;pixelate:8\\&quot; gravity=\\&quot;north\\&quot; height=\\&quot;0.5\\&quot; :overlay=\\&quot;angular_logo\\&quot; width=\\&quot;1.0\\&quot; crop=\\&quot;crop\\&quot; \\\/&gt; &lt;cld-transformation flags=\\&quot;layer_apply\\&quot; gravity=\\&quot;north\\&quot; \\\/&gt; &lt;cld-transformation width=\\&quot;180\\&quot; crop=\\&quot;fit\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;angular_logo\\&quot; &gt;\\n\\t&lt;cld-transformation effect=\\&quot;pixelate:8\\&quot; gravity=\\&quot;north\\&quot; height=\\&quot;0.5\\&quot; :overlay=\\&quot;angular_logo\\&quot; width=\\&quot;1.0\\&quot; crop=\\&quot;crop\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation flags=\\&quot;layer_apply\\&quot; gravity=\\&quot;north\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation width=\\&quot;180\\&quot; crop=\\&quot;fit\\&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;angular_logo\\&quot;)\\n  .overlay(\\n    source(\\n      image(\\&quot;angular_logo\\&quot;).transformation(\\n        new Transformation()\\n          .resize(crop().width(\\&quot;1.0\\&quot;).height(0.5).gravity(compass(\\&quot;north\\&quot;)))\\n          .effect(pixelate().squareSize(8))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;north\\&quot;)))\\n  )\\n  .resize(fit().width(180));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;angular_logo\\&quot;)\\n  .overlay(\\n    source(\\n      image(\\&quot;angular_logo\\&quot;).transformation(\\n        new Transformation()\\n          .resize(crop().width(\\&quot;1.0\\&quot;).height(0.5).gravity(compass(\\&quot;north\\&quot;)))\\n          .effect(pixelate().squareSize(8))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;north\\&quot;)))\\n  )\\n  .resize(fit().width(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;angular_logo\\&quot; &gt; &lt;cl-transformation effect=\\&quot;pixelate:8\\&quot; gravity=\\&quot;north\\&quot; height=\\&quot;0.5\\&quot; overlay=\\&quot;angular_logo\\&quot; width=\\&quot;1.0\\&quot; crop=\\&quot;crop\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation flags=\\&quot;layer_apply\\&quot; gravity=\\&quot;north\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation width=\\&quot;180\\&quot; crop=\\&quot;fit\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;angular_logo\\&quot; &gt;\\n\\t&lt;cl-transformation effect=\\&quot;pixelate:8\\&quot; gravity=\\&quot;north\\&quot; height=\\&quot;0.5\\&quot; overlay=\\&quot;angular_logo\\&quot; width=\\&quot;1.0\\&quot; crop=\\&quot;crop\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation flags=\\&quot;layer_apply\\&quot; gravity=\\&quot;north\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation width=\\&quot;180\\&quot; crop=\\&quot;fit\\&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;angular_logo\\&quot;)\\n  .overlay(\\n    source(\\n      image(\\&quot;angular_logo\\&quot;).transformation(\\n        new Transformation()\\n          .resize(crop().width(\\&quot;1.0\\&quot;).height(0.5).gravity(compass(\\&quot;north\\&quot;)))\\n          .effect(pixelate().squareSize(8))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;north\\&quot;)))\\n  )\\n  .resize(fit().width(180));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;angular_logo\\&quot;)\\n  .overlay(\\n    source(\\n      image(\\&quot;angular_logo\\&quot;).transformation(\\n        new Transformation()\\n          .resize(crop().width(\\&quot;1.0\\&quot;).height(0.5).gravity(compass(\\&quot;north\\&quot;)))\\n          .effect(pixelate().squareSize(8))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;north\\&quot;)))\\n  )\\n  .resize(fit().width(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;angular_logo&#039;, {transformation: [ {effect: \\&quot;pixelate:8\\&quot;, gravity: \\&quot;north\\&quot;, height: \\&quot;0.5\\&quot;, overlay: new cloudinary.Layer().publicId(\\&quot;angular_logo\\&quot;), width: \\&quot;1.0\\&quot;, crop: \\&quot;crop\\&quot;}, {flags: \\&quot;layer_apply\\&quot;, gravity: \\&quot;north\\&quot;}, {width: 180, crop: \\&quot;fit\\&quot;} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;angular_logo&#039;, {transformation: [\\n  {effect: \\&quot;pixelate:8\\&quot;, gravity: \\&quot;north\\&quot;, height: \\&quot;0.5\\&quot;, overlay: new cloudinary.Layer().publicId(\\&quot;angular_logo\\&quot;), width: \\&quot;1.0\\&quot;, crop: \\&quot;crop\\&quot;},\\n  {flags: \\&quot;layer_apply\\&quot;, gravity: \\&quot;north\\&quot;},\\n  {width: 180, crop: \\&quot;fit\\&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;angular_logo\\&quot;).image(transformation=[ {&#039;effect&#039;: \\&quot;pixelate:8\\&quot;, &#039;gravity&#039;: \\&quot;north\\&quot;, &#039;height&#039;: \\&quot;0.5\\&quot;, &#039;overlay&#039;: \\&quot;angular_logo\\&quot;, &#039;width&#039;: \\&quot;1.0\\&quot;, &#039;crop&#039;: \\&quot;crop\\&quot;}, {&#039;flags&#039;: \\&quot;layer_apply\\&quot;, &#039;gravity&#039;: \\&quot;north\\&quot;}, {&#039;width&#039;: 180, &#039;crop&#039;: \\&quot;fit\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;angular_logo\\&quot;).image(transformation=[\\n  {&#039;effect&#039;: \\&quot;pixelate:8\\&quot;, &#039;gravity&#039;: \\&quot;north\\&quot;, &#039;height&#039;: \\&quot;0.5\\&quot;, &#039;overlay&#039;: \\&quot;angular_logo\\&quot;, &#039;width&#039;: \\&quot;1.0\\&quot;, &#039;crop&#039;: \\&quot;crop\\&quot;},\\n  {&#039;flags&#039;: \\&quot;layer_apply\\&quot;, &#039;gravity&#039;: \\&quot;north\\&quot;},\\n  {&#039;width&#039;: 180, &#039;crop&#039;: \\&quot;fit\\&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;angular_logo&#039;))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;angular_logo\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::crop()-&gt;width(1.0)\\n-&gt;height(0.5)\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::north()))\\n\\t)\\n\\t-&gt;effect(Effect::pixelate()-&gt;squareSize(8)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::north()))\\n\\t)\\n\\t)\\n\\t-&gt;resize(Resize::fit()-&gt;width(180));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;angular_logo&#039;))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;angular_logo\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::crop()-&gt;width(1.0)\\n-&gt;height(0.5)\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::north()))\\n\\t)\\n\\t-&gt;effect(Effect::pixelate()-&gt;squareSize(8)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::north()))\\n\\t)\\n\\t)\\n\\t-&gt;resize(Resize::fit()-&gt;width(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;angular_logo\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;effect\\&quot;=&gt;\\&quot;pixelate:8\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;north\\&quot;, \\&quot;height\\&quot;=&gt;\\&quot;0.5\\&quot;, \\&quot;overlay\\&quot;=&gt;\\&quot;angular_logo\\&quot;, \\&quot;width\\&quot;=&gt;\\&quot;1.0\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;crop\\&quot;), array(\\&quot;flags\\&quot;=&gt;\\&quot;layer_apply\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;north\\&quot;), array(\\&quot;width\\&quot;=&gt;180, \\&quot;crop\\&quot;=&gt;\\&quot;fit\\&quot;) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;angular_logo\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;effect\\&quot;=&gt;\\&quot;pixelate:8\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;north\\&quot;, \\&quot;height\\&quot;=&gt;\\&quot;0.5\\&quot;, \\&quot;overlay\\&quot;=&gt;\\&quot;angular_logo\\&quot;, \\&quot;width\\&quot;=&gt;\\&quot;1.0\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;crop\\&quot;),\\n  array(\\&quot;flags\\&quot;=&gt;\\&quot;layer_apply\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;north\\&quot;),\\n  array(\\&quot;width\\&quot;=&gt;180, \\&quot;crop\\&quot;=&gt;\\&quot;fit\\&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().effect(\\&quot;pixelate:8\\&quot;).gravity(\\&quot;north\\&quot;).height(0.5).overlay(new Layer().publicId(\\&quot;angular_logo\\&quot;)).width(1.0).crop(\\&quot;crop\\&quot;).chain() .flags(\\&quot;layer_apply\\&quot;).gravity(\\&quot;north\\&quot;).chain() .width(180).crop(\\&quot;fit\\&quot;)).imageTag(\\&quot;angular_logo\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .effect(\\&quot;pixelate:8\\&quot;).gravity(\\&quot;north\\&quot;).height(0.5).overlay(new Layer().publicId(\\&quot;angular_logo\\&quot;)).width(1.0).crop(\\&quot;crop\\&quot;).chain()\\n  .flags(\\&quot;layer_apply\\&quot;).gravity(\\&quot;north\\&quot;).chain()\\n  .width(180).crop(\\&quot;fit\\&quot;)).imageTag(\\&quot;angular_logo\\&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;angular_logo\\&quot;, transformation: [ {effect: \\&quot;pixelate:8\\&quot;, gravity: \\&quot;north\\&quot;, height: 0.5, overlay: \\&quot;angular_logo\\&quot;, width: 1.0, crop: \\&quot;crop\\&quot;}, {flags: \\&quot;layer_apply\\&quot;, gravity: \\&quot;north\\&quot;}, {width: 180, crop: \\&quot;fit\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;angular_logo\\&quot;, transformation: [\\n  {effect: \\&quot;pixelate:8\\&quot;, gravity: \\&quot;north\\&quot;, height: 0.5, overlay: \\&quot;angular_logo\\&quot;, width: 1.0, crop: \\&quot;crop\\&quot;},\\n  {flags: \\&quot;layer_apply\\&quot;, gravity: \\&quot;north\\&quot;},\\n  {width: 180, crop: \\&quot;fit\\&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().Effect(\\&quot;pixelate:8\\&quot;).Gravity(\\&quot;north\\&quot;).Height(0.5).Overlay(new Layer().PublicId(\\&quot;angular_logo\\&quot;)).Width(1.0).Crop(\\&quot;crop\\&quot;).Chain() .Flags(\\&quot;layer_apply\\&quot;).Gravity(\\&quot;north\\&quot;).Chain() .Width(180).Crop(\\&quot;fit\\&quot;)).BuildImageTag(\\&quot;angular_logo\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Effect(\\&quot;pixelate:8\\&quot;).Gravity(\\&quot;north\\&quot;).Height(0.5).Overlay(new Layer().PublicId(\\&quot;angular_logo\\&quot;)).Width(1.0).Crop(\\&quot;crop\\&quot;).Chain()\\n  .Flags(\\&quot;layer_apply\\&quot;).Gravity(\\&quot;north\\&quot;).Chain()\\n  .Width(180).Crop(\\&quot;fit\\&quot;)).BuildImageTag(\\&quot;angular_logo\\&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;angular_logo&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;angular_logo\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.crop().width(&#039;1.0&#039;)\\n.height(0.5)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t.effect(Effect.pixelate().squareSize(8)))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t)\\n\\t.resize(Resize.fit().width(180)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;angular_logo&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;angular_logo\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.crop().width(&#039;1.0&#039;)\\n.height(0.5)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t.effect(Effect.pixelate().squareSize(8)))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t)\\n\\t.resize(Resize.fit().width(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().setEffect(\\&quot;pixelate:8\\&quot;).setGravity(\\&quot;north\\&quot;).setHeight(0.5).setOverlay(\\&quot;angular_logo\\&quot;).setWidth(1.0).setCrop(\\&quot;crop\\&quot;).chain() .setFlags(\\&quot;layer_apply\\&quot;).setGravity(\\&quot;north\\&quot;).chain() .setWidth(180).setCrop(\\&quot;fit\\&quot;)).generate(\\&quot;angular_logo\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setEffect(\\&quot;pixelate:8\\&quot;).setGravity(\\&quot;north\\&quot;).setHeight(0.5).setOverlay(\\&quot;angular_logo\\&quot;).setWidth(1.0).setCrop(\\&quot;crop\\&quot;).chain()\\n  .setFlags(\\&quot;layer_apply\\&quot;).setGravity(\\&quot;north\\&quot;).chain()\\n  .setWidth(180).setCrop(\\&quot;fit\\&quot;)).generate(\\&quot;angular_logo\\&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;pixelate:8\\&quot;).gravity(\\&quot;north\\&quot;).height(0.5).overlay(new Layer().publicId(\\&quot;angular_logo\\&quot;)).width(1.0).crop(\\&quot;crop\\&quot;).chain() .flags(\\&quot;layer_apply\\&quot;).gravity(\\&quot;north\\&quot;).chain() .width(180).crop(\\&quot;fit\\&quot;)).generate(\\&quot;angular_logo\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .effect(\\&quot;pixelate:8\\&quot;).gravity(\\&quot;north\\&quot;).height(0.5).overlay(new Layer().publicId(\\&quot;angular_logo\\&quot;)).width(1.0).crop(\\&quot;crop\\&quot;).chain()\\n  .flags(\\&quot;layer_apply\\&quot;).gravity(\\&quot;north\\&quot;).chain()\\n  .width(180).crop(\\&quot;fit\\&quot;)).generate(\\&quot;angular_logo\\&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;angular_logo&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;angular_logo\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.crop().width(&#039;1.0&#039;)\\n.height(0.5)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t.effect(Effect.pixelate().squareSize(8)))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t)\\n\\t.resize(Resize.fit().width(180)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;angular_logo&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;angular_logo\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.crop().width(&#039;1.0&#039;)\\n.height(0.5)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t.effect(Effect.pixelate().squareSize(8)))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t)\\n\\t.resize(Resize.fit().width(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;angular_logo\\&quot;)\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;angular_logo\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.crop() { width(1.0F)\\n height(0.5F)\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t })\\n\\t effect(Effect.pixelate() { squareSize(8) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t })\\n\\t })\\n\\t resize(Resize.fit() { width(180) }) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;angular_logo\\&quot;)\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;angular_logo\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.crop() { width(1.0F)\\n height(0.5F)\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t })\\n\\t effect(Effect.pixelate() { squareSize(8) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t })\\n\\t })\\n\\t resize(Resize.fit() { width(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;angular_logo\\&quot;, {transformation: [ {effect: \\&quot;pixelate:8\\&quot;, gravity: \\&quot;north\\&quot;, height: \\&quot;0.5\\&quot;, overlay: new cloudinary.Layer().publicId(\\&quot;angular_logo\\&quot;), width: \\&quot;1.0\\&quot;, crop: \\&quot;crop\\&quot;}, {flags: \\&quot;layer_apply\\&quot;, gravity: \\&quot;north\\&quot;}, {width: 180, crop: \\&quot;fit\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;angular_logo\\&quot;, {transformation: [\\n  {effect: \\&quot;pixelate:8\\&quot;, gravity: \\&quot;north\\&quot;, height: \\&quot;0.5\\&quot;, overlay: new cloudinary.Layer().publicId(\\&quot;angular_logo\\&quot;), width: \\&quot;1.0\\&quot;, crop: \\&quot;crop\\&quot;},\\n  {flags: \\&quot;layer_apply\\&quot;, gravity: \\&quot;north\\&quot;},\\n  {width: 180, crop: \\&quot;fit\\&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;angular_logo\\&quot;)\\n  .overlay(\\n    source(\\n      image(\\&quot;angular_logo\\&quot;).transformation(\\n        new Transformation()\\n          .resize(crop().width(\\&quot;1.0\\&quot;).height(0.5).gravity(compass(\\&quot;north\\&quot;)))\\n          .effect(pixelate().squareSize(8))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;north\\&quot;)))\\n  )\\n  .resize(fit().width(180));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;angular_logo\\&quot;)\\n  .overlay(\\n    source(\\n      image(\\&quot;angular_logo\\&quot;).transformation(\\n        new Transformation()\\n          .resize(crop().width(\\&quot;1.0\\&quot;).height(0.5).gravity(compass(\\&quot;north\\&quot;)))\\n          .effect(pixelate().squareSize(8))\\n      )\\n    ).position(new Position().gravity(compass(\\&quot;north\\&quot;)))\\n  )\\n  .resize(fit().width(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\\\/c_crop,e_pixelate:8,g_north,h_0.5,l_angular_logo,w_1.0\\\/fl_layer_apply,g_north\\\/c_fit,w_180\\\/angular_logo&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;crop_mode&quot;:&quot;crop&quot;,&quot;effect&quot;:&quot;pixelate:8&quot;,&quot;gravity&quot;:&quot;north&quot;,&quot;height&quot;:&quot;0.5&quot;,&quot;overlay&quot;:&quot;angular_logo&quot;,&quot;width&quot;:&quot;1.0&quot;},{&quot;flags&quot;:&quot;layer_apply&quot;,&quot;gravity&quot;:&quot;north&quot;},{&quot;crop_mode&quot;:&quot;fit&quot;,&quot;width&quot;:&quot;180&quot;}],&quot;transformation_string&quot;:&quot;c_crop,e_pixelate:8,g_north,h_0.5,l_angular_logo,w_1.0\\\/fl_layer_apply,g_north\\\/c_fit,w_180&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;angular_logo&quot;,&quot;extension&quot;:&quot;&quot;,&quot;format&quot;:&quot;&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\/c_crop,e_pixelate:8,g_north,h_0.5,l_angular_logo,w_1.0\/fl_layer_apply,g_north\/c_fit,w_180\/angular_logo\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/c_crop,e_pixelate:8,g_north,h_0.5,l_angular_logo,w_1.0\/fl_layer_apply,g_north\/c_fit,w_180\/angular_logo\" alt=\"Angular logo transformation\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"180\" height=\"180\"\/><\/a><\/p>\n<p><em>(<a href=\"https:\/\/angular.io\/presskit.html\">Angular logo<\/a> is released under <a href=\"https:\/\/creativecommons.org\/licenses\/by\/4.0\/\">CC BY 4.0<\/a>)<\/em><\/p>\n<p>The above image was generated by overlaying the Angular logo onto itself, cropping the overlay and pixelating its top, then cropping the result to be 180px wide.<\/p>\n<p>The same transformation can be achieved in your Angular2 app using the following directives:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\">\t<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-image<\/span> <span class=\"hljs-attr\">secure<\/span>=<span class=\"hljs-string\">\"true\"<\/span> <span class=\"hljs-attr\">public-id<\/span>=<span class=\"hljs-string\">\"angular_logo\"<\/span> <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"180\"<\/span> <span class=\"hljs-attr\">crop<\/span>=<span class=\"hljs-string\">\"fit\"<\/span>&gt;<\/span>\n\t\t<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-transformation<\/span> <span class=\"hljs-attr\">overlay<\/span>=<span class=\"hljs-string\">\"angular_logo\"<\/span> <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"1.0\"<\/span> <span class=\"hljs-attr\">height<\/span>=<span class=\"hljs-string\">\"0.5\"<\/span> <span class=\"hljs-attr\">crop<\/span>=<span class=\"hljs-string\">\"crop\"<\/span> <span class=\"hljs-attr\">effect<\/span>=<span class=\"hljs-string\">\"pixelate:8\"<\/span> <span class=\"hljs-attr\">gravity<\/span>=<span class=\"hljs-string\">\"north\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-transformation<\/span>&gt;<\/span>\n\t\t<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-transformation<\/span> <span class=\"hljs-attr\">flags<\/span>=<span class=\"hljs-string\">\"layer_apply\"<\/span> <span class=\"hljs-attr\">gravity<\/span>=<span class=\"hljs-string\">\"north\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-transformation<\/span>&gt;<\/span>\n\t<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-image<\/span>&gt;<\/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\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>Additional transformation examples can be found in the <a href=\"https:\/\/cloudinary.com\/documentation\/jquery_image_manipulation\">jQuery image manipulation guide<\/a> and the <a href=\"https:\/\/cloudinary.com\/documentation\/transformation_reference\">complete image transformation reference<\/a><\/p>\n<p>The same applies to videos:<\/p>\n<p><video\n      controls\n      muted\n      preload=\"none\"\n      class=\"c-transformed-asset c-transformed-asset--video\"\n      poster=\"https:\/\/res.cloudinary.com\/cloudinary\/video\/upload\/g_north,l_text:arial_30:Cloudinary%20features,y_8,co_red\/w_1000\/manipulation_video.jpg\"\n      \n    >\n      <source src=\"https:\/\/res.cloudinary.com\/cloudinary\/video\/upload\/g_north,l_text:arial_30:Cloudinary features,y_8,co_red\/w_1000\/vc_h265\/manipulation_video.mp4\" type=\"video\/mp4; codecs=hevc\">\n<source src=\"https:\/\/res.cloudinary.com\/cloudinary\/video\/upload\/g_north,l_text:arial_30:Cloudinary features,y_8,co_red\/w_1000\/vc_vp9\/manipulation_video.webm\" type=\"video\/webm; codecs=vp9\">\n<source src=\"https:\/\/res.cloudinary.com\/cloudinary\/video\/upload\/g_north,l_text:arial_30:Cloudinary features,y_8,co_red\/w_1000\/vc_auto\/manipulation_video.mp4\" type=\"video\/mp4\">\n<source src=\"https:\/\/res.cloudinary.com\/cloudinary\/video\/upload\/g_north,l_text:arial_30:Cloudinary features,y_8,co_red\/w_1000\/vc_auto\/manipulation_video.webm\" type=\"video\/webm\">\n    <\/video><\/p>\n<p>The link to this video is<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">https:<span class=\"hljs-comment\">\/\/res.cloudinary.com\/cloudinary\/video\/upload\/g_north,l_text:arial_30:Cloudinary%20features,y_8,co_red\/w_1000\/manipulation_video.mp4<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><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>This can be achieved using the Angular SDK with the following directives:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-video<\/span> <span class=\"hljs-attr\">public-id<\/span>=<span class=\"hljs-string\">\"manipulation_video\"<\/span>\n<span class=\"hljs-attr\">cloud-name<\/span>=<span class=\"hljs-string\">\"cloudinary\"<\/span> <span class=\"hljs-attr\">controls<\/span>=<span class=\"hljs-string\">\"true\"<\/span> \n<span class=\"hljs-attr\">preload<\/span>=<span class=\"hljs-string\">\"none\"<\/span> <span class=\"hljs-attr\">autoplay<\/span>=<span class=\"hljs-string\">\"true\"<\/span>\n<span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"1000\"<\/span> <span class=\"hljs-attr\">secure<\/span>=<span class=\"hljs-string\">\"true\"<\/span>\n<span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"manipulation-video\"<\/span>&gt;<\/span>\n   <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-transformation<\/span> <span class=\"hljs-attr\">overlay<\/span>=<span class=\"hljs-string\">\"text:arial_30:Cloudinary%20features\"<\/span> \n        <span class=\"hljs-attr\">color<\/span>=<span class=\"hljs-string\">\"red\"<\/span> <span class=\"hljs-attr\">gravity<\/span>=<span class=\"hljs-string\">\"north\"<\/span> <span class=\"hljs-attr\">y<\/span>=<span class=\"hljs-string\">\"8\"<\/span>&gt;<\/span>\n   <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-transformation<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-video<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<h2>How do I start using the SDK?<\/h2>\n<h3>Installation<\/h3>\n<p>The SDK can be installed via Node Package Manager by executing the following command in your application\u2019s root folder<\/p>\n<p><code>npm install @cloudinary\/angular --save<\/code><\/p>\n<p>Or if you\u2019re using <a href=\"https:\/\/yarnpkg.com\/\">yarn<\/a>:<\/p>\n<p><code>yarn add @cloudinary\/angular<\/code><\/p>\n<h3>Cloudinary module configuration<\/h3>\n<p>The SDK is based on <a href=\"https:\/\/cloudinary.com\/blog\/painless_image_and_video_manipulation_with_javascript\">Cloudinary\u2019s Javascript module<\/a>, however the two are decoupled.\nThe <code>Cloudinary<\/code> module is a configurable service to which you provide your choice of our JS module.<\/p>\n<p>See below for an example Cloudinary configuration in the application module definition:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-keyword\">import<\/span> { NgModule } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'@angular\/core'<\/span>;\n...\nimport { CloudinaryModule, CloudinaryConfiguration, provideCloudinary } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'@cloudinary\/angular'<\/span>;\n\n@NgModule({\n    <span class=\"hljs-attr\">imports<\/span>: &#91;\n        CloudinaryModule\n    ],\n    <span class=\"hljs-attr\">providers<\/span>: &#91;\n        provideCloudinary(<span class=\"hljs-built_in\">require<\/span>(<span class=\"hljs-string\">'cloudinary-core'<\/span>), { <span class=\"hljs-attr\">cloud_name<\/span>: <span class=\"hljs-string\">'your_cloud_name'<\/span> } <span class=\"hljs-keyword\">as<\/span> CloudinaryConfiguration)\n    ],\n    <span class=\"hljs-attr\">bootstrap<\/span>: &#91;...]\n})\n<span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">AppModule<\/span> <\/span>{ }\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><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>If you are using <a href=\"https:\/\/angular.io\/docs\/ts\/latest\/cookbook\/aot-compiler.html\">Angular AOT<\/a> you need to configure Cloudinary a bit differently:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-keyword\">import<\/span> { NgModule } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'@angular\/core'<\/span>;\n...\nimport { CloudinaryModule } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'@cloudinary\/angular'<\/span>;\n<span class=\"hljs-keyword\">import<\/span> { Cloudinary } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'cloudinary-core\/cloudinary-core-shrinkwrap'<\/span>;\n\n<span class=\"hljs-keyword\">const<\/span> cloudinaryLib = {\n  <span class=\"hljs-attr\">Cloudinary<\/span>: Cloudinary\n}\n\n@NgModule({\n    <span class=\"hljs-attr\">imports<\/span>: &#91;\n    CloudinaryModule.forRoot(cloudinaryLib, {\n      <span class=\"hljs-attr\">cloud_name<\/span>: <span class=\"hljs-string\">'your_cloud_name'<\/span>\n    })\n    ],\n    <span class=\"hljs-attr\">bootstrap<\/span>: &#91;...]\n})\n<span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">AppModule<\/span> <\/span>{ }\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><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<h3>Cloudinary directives<\/h3>\n<p>The <code>Cloudinary<\/code> module provides a component and several directives for:<\/p>\n<ul>\n<li>Creating new image and video tags and controlling the underlying chained transformations<\/li>\n<li>Enhancing native HTML elements with Cloudinary image management capabilities<\/li>\n<\/ul>\n<h5>Creating image tags with cl-image &amp; cl-transformation<\/h5>\n<p>The <code>cl-image<\/code> component generates an image tag with the requested transformation, type, and format.\nThe image tag can contain optional <code>cl-transformation<\/code> elements that will be used for <a href=\"https:\/\/cloudinary.com\/documentation\/image_transformations#chained_transformations\">chained transformations<\/a>.<\/p>\n<p>The following example demonstrates a chained transformation with several components applied to a single image<\/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;angular_logo.jpg\\&quot;, {transformation: [ {effect: \\&quot;sepia\\&quot;, height: 150, width: 150, crop: \\&quot;fill\\&quot;}, {color: \\&quot;#EECCAA\\&quot;, gravity: \\&quot;south\\&quot;, overlay: {font_family: \\&quot;arial\\&quot;, font_size: 20, text: \\&quot;Angular\\&quot;}, y: 20}, {angle: 20} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;angular_logo.jpg\\&quot;, {transformation: [\\n  {effect: \\&quot;sepia\\&quot;, height: 150, width: 150, crop: \\&quot;fill\\&quot;},\\n  {color: \\&quot;#EECCAA\\&quot;, gravity: \\&quot;south\\&quot;, overlay: {font_family: \\&quot;arial\\&quot;, font_size: 20, text: \\&quot;Angular\\&quot;}, y: 20},\\n  {angle: 20}\\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;angular_logo.jpg\\&quot;)\\n  .resize(fill().width(150).height(150))\\n  .effect(sepia())\\n  .overlay(\\n    source(\\n      text(\\&quot;Angular\\&quot;, new TextStyle(\\&quot;arial\\&quot;, 20)).textColor(\\&quot;#EECCAA\\&quot;)\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;south\\&quot;))\\n        .offsetY(20)\\n    )\\n  )\\n  .rotate(byAngle(20));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;angular_logo.jpg\\&quot;)\\n  .resize(fill().width(150).height(150))\\n  .effect(sepia())\\n  .overlay(\\n    source(\\n      text(\\&quot;Angular\\&quot;, new TextStyle(\\&quot;arial\\&quot;, 20)).textColor(\\&quot;#EECCAA\\&quot;)\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;south\\&quot;))\\n        .offsetY(20)\\n    )\\n  )\\n  .rotate(byAngle(20));&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;angular_logo.jpg\\&quot; &gt; &lt;Transformation effect=\\&quot;sepia\\&quot; height=\\&quot;150\\&quot; width=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;Transformation color=\\&quot;#EECCAA\\&quot; gravity=\\&quot;south\\&quot; overlay={{fontFamily: \\&quot;arial\\&quot;, fontSize: 20, text: \\&quot;Angular\\&quot;}} y=\\&quot;20\\&quot; \\\/&gt; &lt;Transformation angle=\\&quot;20\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;angular_logo.jpg\\&quot; &gt;\\n\\t&lt;Transformation effect=\\&quot;sepia\\&quot; height=\\&quot;150\\&quot; width=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n\\t&lt;Transformation color=\\&quot;#EECCAA\\&quot; gravity=\\&quot;south\\&quot; overlay={{fontFamily: \\&quot;arial\\&quot;, fontSize: 20, text: \\&quot;Angular\\&quot;}} y=\\&quot;20\\&quot; \\\/&gt;\\n\\t&lt;Transformation angle=\\&quot;20\\&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;angular_logo.jpg\\&quot;)\\n  .resize(fill().width(150).height(150))\\n  .effect(sepia())\\n  .overlay(\\n    source(\\n      text(\\&quot;Angular\\&quot;, new TextStyle(\\&quot;arial\\&quot;, 20)).textColor(\\&quot;#EECCAA\\&quot;)\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;south\\&quot;))\\n        .offsetY(20)\\n    )\\n  )\\n  .rotate(byAngle(20));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;angular_logo.jpg\\&quot;)\\n  .resize(fill().width(150).height(150))\\n  .effect(sepia())\\n  .overlay(\\n    source(\\n      text(\\&quot;Angular\\&quot;, new TextStyle(\\&quot;arial\\&quot;, 20)).textColor(\\&quot;#EECCAA\\&quot;)\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;south\\&quot;))\\n        .offsetY(20)\\n    )\\n  )\\n  .rotate(byAngle(20));&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;angular_logo.jpg\\&quot; &gt; &lt;cld-transformation effect=\\&quot;sepia\\&quot; height=\\&quot;150\\&quot; width=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;cld-transformation color=\\&quot;#EECCAA\\&quot; gravity=\\&quot;south\\&quot; :overlay=\\&quot;{fontFamily: &#039;arial&#039;, fontSize: 20, text: &#039;Angular&#039;}\\&quot; y=\\&quot;20\\&quot; \\\/&gt; &lt;cld-transformation angle=\\&quot;20\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;angular_logo.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation effect=\\&quot;sepia\\&quot; height=\\&quot;150\\&quot; width=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation color=\\&quot;#EECCAA\\&quot; gravity=\\&quot;south\\&quot; :overlay=\\&quot;{fontFamily: &#039;arial&#039;, fontSize: 20, text: &#039;Angular&#039;}\\&quot; y=\\&quot;20\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation angle=\\&quot;20\\&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;angular_logo.jpg\\&quot;)\\n  .resize(fill().width(150).height(150))\\n  .effect(sepia())\\n  .overlay(\\n    source(\\n      text(\\&quot;Angular\\&quot;, new TextStyle(\\&quot;arial\\&quot;, 20)).textColor(\\&quot;#EECCAA\\&quot;)\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;south\\&quot;))\\n        .offsetY(20)\\n    )\\n  )\\n  .rotate(byAngle(20));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;angular_logo.jpg\\&quot;)\\n  .resize(fill().width(150).height(150))\\n  .effect(sepia())\\n  .overlay(\\n    source(\\n      text(\\&quot;Angular\\&quot;, new TextStyle(\\&quot;arial\\&quot;, 20)).textColor(\\&quot;#EECCAA\\&quot;)\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;south\\&quot;))\\n        .offsetY(20)\\n    )\\n  )\\n  .rotate(byAngle(20));&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;angular_logo.jpg\\&quot; &gt; &lt;cl-transformation effect=\\&quot;sepia\\&quot; height=\\&quot;150\\&quot; width=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation color=\\&quot;#EECCAA\\&quot; gravity=\\&quot;south\\&quot; overlay=\\&quot;text:arial_20:Angular\\&quot; y=\\&quot;20\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation angle=\\&quot;20\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;angular_logo.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation effect=\\&quot;sepia\\&quot; height=\\&quot;150\\&quot; width=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation color=\\&quot;#EECCAA\\&quot; gravity=\\&quot;south\\&quot; overlay=\\&quot;text:arial_20:Angular\\&quot; y=\\&quot;20\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation angle=\\&quot;20\\&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;angular_logo.jpg\\&quot;)\\n  .resize(fill().width(150).height(150))\\n  .effect(sepia())\\n  .overlay(\\n    source(\\n      text(\\&quot;Angular\\&quot;, new TextStyle(\\&quot;arial\\&quot;, 20)).textColor(\\&quot;#EECCAA\\&quot;)\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;south\\&quot;))\\n        .offsetY(20)\\n    )\\n  )\\n  .rotate(byAngle(20));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;angular_logo.jpg\\&quot;)\\n  .resize(fill().width(150).height(150))\\n  .effect(sepia())\\n  .overlay(\\n    source(\\n      text(\\&quot;Angular\\&quot;, new TextStyle(\\&quot;arial\\&quot;, 20)).textColor(\\&quot;#EECCAA\\&quot;)\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;south\\&quot;))\\n        .offsetY(20)\\n    )\\n  )\\n  .rotate(byAngle(20));&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;angular_logo.jpg&#039;, {transformation: [ {effect: \\&quot;sepia\\&quot;, height: 150, width: 150, crop: \\&quot;fill\\&quot;}, {color: \\&quot;#EECCAA\\&quot;, gravity: \\&quot;south\\&quot;, overlay: new cloudinary.TextLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).text(\\&quot;Angular\\&quot;), y: 20}, {angle: 20} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;angular_logo.jpg&#039;, {transformation: [\\n  {effect: \\&quot;sepia\\&quot;, height: 150, width: 150, crop: \\&quot;fill\\&quot;},\\n  {color: \\&quot;#EECCAA\\&quot;, gravity: \\&quot;south\\&quot;, overlay: new cloudinary.TextLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).text(\\&quot;Angular\\&quot;), y: 20},\\n  {angle: 20}\\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;angular_logo.jpg\\&quot;).image(transformation=[ {&#039;effect&#039;: \\&quot;sepia\\&quot;, &#039;height&#039;: 150, &#039;width&#039;: 150, &#039;crop&#039;: \\&quot;fill\\&quot;}, {&#039;color&#039;: \\&quot;#EECCAA\\&quot;, &#039;gravity&#039;: \\&quot;south\\&quot;, &#039;overlay&#039;: {&#039;font_family&#039;: \\&quot;arial\\&quot;, &#039;font_size&#039;: 20, &#039;text&#039;: \\&quot;Angular\\&quot;}, &#039;y&#039;: 20}, {&#039;angle&#039;: 20} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;angular_logo.jpg\\&quot;).image(transformation=[\\n  {&#039;effect&#039;: \\&quot;sepia\\&quot;, &#039;height&#039;: 150, &#039;width&#039;: 150, &#039;crop&#039;: \\&quot;fill\\&quot;},\\n  {&#039;color&#039;: \\&quot;#EECCAA\\&quot;, &#039;gravity&#039;: \\&quot;south\\&quot;, &#039;overlay&#039;: {&#039;font_family&#039;: \\&quot;arial\\&quot;, &#039;font_size&#039;: 20, &#039;text&#039;: \\&quot;Angular\\&quot;}, &#039;y&#039;: 20},\\n  {&#039;angle&#039;: 20}\\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;angular_logo.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(150)\\n-&gt;height(150))\\n\\t-&gt;effect(Effect::sepia())\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::text(\\&quot;Angular\\&quot;,(new TextStyle(\\&quot;arial\\&quot;,20)))\\n\\t-&gt;textColor(Color::rgb(\\&quot;EECCAA\\&quot;))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::south()))\\n-&gt;offsetY(20))\\n\\t)\\n\\t-&gt;rotate(Rotate::byAngle(20));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;angular_logo.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(150)\\n-&gt;height(150))\\n\\t-&gt;effect(Effect::sepia())\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::text(\\&quot;Angular\\&quot;,(new TextStyle(\\&quot;arial\\&quot;,20)))\\n\\t-&gt;textColor(Color::rgb(\\&quot;EECCAA\\&quot;))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::south()))\\n-&gt;offsetY(20))\\n\\t)\\n\\t-&gt;rotate(Rotate::byAngle(20));&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;angular_logo.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;effect\\&quot;=&gt;\\&quot;sepia\\&quot;, \\&quot;height\\&quot;=&gt;150, \\&quot;width\\&quot;=&gt;150, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;), array(\\&quot;color\\&quot;=&gt;\\&quot;#EECCAA\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;south\\&quot;, \\&quot;overlay\\&quot;=&gt;array(\\&quot;font_family\\&quot;=&gt;\\&quot;arial\\&quot;, \\&quot;font_size\\&quot;=&gt;20, \\&quot;text\\&quot;=&gt;\\&quot;Angular\\&quot;), \\&quot;y\\&quot;=&gt;20), array(\\&quot;angle\\&quot;=&gt;20) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;angular_logo.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;effect\\&quot;=&gt;\\&quot;sepia\\&quot;, \\&quot;height\\&quot;=&gt;150, \\&quot;width\\&quot;=&gt;150, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;),\\n  array(\\&quot;color\\&quot;=&gt;\\&quot;#EECCAA\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;south\\&quot;, \\&quot;overlay\\&quot;=&gt;array(\\&quot;font_family\\&quot;=&gt;\\&quot;arial\\&quot;, \\&quot;font_size\\&quot;=&gt;20, \\&quot;text\\&quot;=&gt;\\&quot;Angular\\&quot;), \\&quot;y\\&quot;=&gt;20),\\n  array(\\&quot;angle\\&quot;=&gt;20)\\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().effect(\\&quot;sepia\\&quot;).height(150).width(150).crop(\\&quot;fill\\&quot;).chain() .color(\\&quot;#EECCAA\\&quot;).gravity(\\&quot;south\\&quot;).overlay(new TextLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).text(\\&quot;Angular\\&quot;)).y(20).chain() .angle(20)).imageTag(\\&quot;angular_logo.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .effect(\\&quot;sepia\\&quot;).height(150).width(150).crop(\\&quot;fill\\&quot;).chain()\\n  .color(\\&quot;#EECCAA\\&quot;).gravity(\\&quot;south\\&quot;).overlay(new TextLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).text(\\&quot;Angular\\&quot;)).y(20).chain()\\n  .angle(20)).imageTag(\\&quot;angular_logo.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;angular_logo.jpg\\&quot;, transformation: [ {effect: \\&quot;sepia\\&quot;, height: 150, width: 150, crop: \\&quot;fill\\&quot;}, {color: \\&quot;#EECCAA\\&quot;, gravity: \\&quot;south\\&quot;, overlay: {font_family: \\&quot;arial\\&quot;, font_size: 20, text: \\&quot;Angular\\&quot;}, y: 20}, {angle: 20} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;angular_logo.jpg\\&quot;, transformation: [\\n  {effect: \\&quot;sepia\\&quot;, height: 150, width: 150, crop: \\&quot;fill\\&quot;},\\n  {color: \\&quot;#EECCAA\\&quot;, gravity: \\&quot;south\\&quot;, overlay: {font_family: \\&quot;arial\\&quot;, font_size: 20, text: \\&quot;Angular\\&quot;}, y: 20},\\n  {angle: 20}\\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().Effect(\\&quot;sepia\\&quot;).Height(150).Width(150).Crop(\\&quot;fill\\&quot;).Chain() .Color(\\&quot;#EECCAA\\&quot;).Gravity(\\&quot;south\\&quot;).Overlay(new TextLayer().FontFamily(\\&quot;arial\\&quot;).FontSize(20).Text(\\&quot;Angular\\&quot;)).Y(20).Chain() .Angle(20)).BuildImageTag(\\&quot;angular_logo.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Effect(\\&quot;sepia\\&quot;).Height(150).Width(150).Crop(\\&quot;fill\\&quot;).Chain()\\n  .Color(\\&quot;#EECCAA\\&quot;).Gravity(\\&quot;south\\&quot;).Overlay(new TextLayer().FontFamily(\\&quot;arial\\&quot;).FontSize(20).Text(\\&quot;Angular\\&quot;)).Y(20).Chain()\\n  .Angle(20)).BuildImageTag(\\&quot;angular_logo.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;angular_logo.jpg&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;c_fill,e_sepia,h_150,w_150\\\/co_rgb:EECCAA,g_south,l_text:arial_20:Angular,y_20\\\/a_20\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;angular_logo.jpg&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;c_fill,e_sepia,h_150,w_150\\\/co_rgb:EECCAA,g_south,l_text:arial_20:Angular,y_20\\\/a_20\\&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().setEffect(\\&quot;sepia\\&quot;).setHeight(150).setWidth(150).setCrop(\\&quot;fill\\&quot;).chain() .setColor(\\&quot;#EECCAA\\&quot;).setGravity(\\&quot;south\\&quot;).setOverlay(\\&quot;text:arial_20:Angular\\&quot;).setY(20).chain() .setAngle(20)).generate(\\&quot;angular_logo.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setEffect(\\&quot;sepia\\&quot;).setHeight(150).setWidth(150).setCrop(\\&quot;fill\\&quot;).chain()\\n  .setColor(\\&quot;#EECCAA\\&quot;).setGravity(\\&quot;south\\&quot;).setOverlay(\\&quot;text:arial_20:Angular\\&quot;).setY(20).chain()\\n  .setAngle(20)).generate(\\&quot;angular_logo.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;sepia\\&quot;).height(150).width(150).crop(\\&quot;fill\\&quot;).chain() .color(\\&quot;#EECCAA\\&quot;).gravity(\\&quot;south\\&quot;).overlay(new TextLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).text(\\&quot;Angular\\&quot;)).y(20).chain() .angle(20)).generate(\\&quot;angular_logo.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .effect(\\&quot;sepia\\&quot;).height(150).width(150).crop(\\&quot;fill\\&quot;).chain()\\n  .color(\\&quot;#EECCAA\\&quot;).gravity(\\&quot;south\\&quot;).overlay(new TextLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).text(\\&quot;Angular\\&quot;)).y(20).chain()\\n  .angle(20)).generate(\\&quot;angular_logo.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;angular_logo.jpg&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;c_fill,e_sepia,h_150,w_150\\\/co_rgb:EECCAA,g_south,l_text:arial_20:Angular,y_20\\\/a_20\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;angular_logo.jpg&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;c_fill,e_sepia,h_150,w_150\\\/co_rgb:EECCAA,g_south,l_text:arial_20:Angular,y_20\\\/a_20\\&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;angular_logo.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(150)\\n height(150) })\\n\\t effect(Effect.sepia())\\n\\t overlay(Overlay.source(\\n\\tSource.text(\\&quot;Angular\\&quot;,TextStyle(\\&quot;arial\\&quot;,20)) {\\n\\t textColor(Color.rgb(\\&quot;EECCAA\\&quot;))\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.south()))\\n offsetY(20) })\\n\\t })\\n\\t rotate(Rotate.byAngle(20)) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;angular_logo.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(150)\\n height(150) })\\n\\t effect(Effect.sepia())\\n\\t overlay(Overlay.source(\\n\\tSource.text(\\&quot;Angular\\&quot;,TextStyle(\\&quot;arial\\&quot;,20)) {\\n\\t textColor(Color.rgb(\\&quot;EECCAA\\&quot;))\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.south()))\\n offsetY(20) })\\n\\t })\\n\\t rotate(Rotate.byAngle(20)) \\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;angular_logo.jpg\\&quot;, {transformation: [ {effect: \\&quot;sepia\\&quot;, height: 150, width: 150, crop: \\&quot;fill\\&quot;}, {color: \\&quot;#EECCAA\\&quot;, gravity: \\&quot;south\\&quot;, overlay: new cloudinary.TextLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).text(\\&quot;Angular\\&quot;), y: 20}, {angle: 20} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;angular_logo.jpg\\&quot;, {transformation: [\\n  {effect: \\&quot;sepia\\&quot;, height: 150, width: 150, crop: \\&quot;fill\\&quot;},\\n  {color: \\&quot;#EECCAA\\&quot;, gravity: \\&quot;south\\&quot;, overlay: new cloudinary.TextLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).text(\\&quot;Angular\\&quot;), y: 20},\\n  {angle: 20}\\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;angular_logo.jpg\\&quot;)\\n  .resize(fill().width(150).height(150))\\n  .effect(sepia())\\n  .overlay(\\n    source(\\n      text(\\&quot;Angular\\&quot;, new TextStyle(\\&quot;arial\\&quot;, 20)).textColor(\\&quot;#EECCAA\\&quot;)\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;south\\&quot;))\\n        .offsetY(20)\\n    )\\n  )\\n  .rotate(byAngle(20));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;angular_logo.jpg\\&quot;)\\n  .resize(fill().width(150).height(150))\\n  .effect(sepia())\\n  .overlay(\\n    source(\\n      text(\\&quot;Angular\\&quot;, new TextStyle(\\&quot;arial\\&quot;, 20)).textColor(\\&quot;#EECCAA\\&quot;)\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;south\\&quot;))\\n        .offsetY(20)\\n    )\\n  )\\n  .rotate(byAngle(20));&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\\\/c_fill,e_sepia,h_150,w_150\\\/co_rgb:EECCAA,g_south,l_text:arial_20:Angular,y_20\\\/a_20\\\/angular_logo.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;crop_mode&quot;:&quot;fill&quot;,&quot;effect&quot;:&quot;sepia&quot;,&quot;height&quot;:&quot;150&quot;,&quot;width&quot;:&quot;150&quot;},{&quot;color&quot;:&quot;rgb:EECCAA&quot;,&quot;gravity&quot;:&quot;south&quot;,&quot;overlay&quot;:&quot;text:arial_20:Angular&quot;,&quot;y&quot;:&quot;20&quot;},{&quot;angle&quot;:&quot;20&quot;}],&quot;transformation_string&quot;:&quot;c_fill,e_sepia,h_150,w_150\\\/co_rgb:EECCAA,g_south,l_text:arial_20:Angular,y_20\\\/a_20&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;angular_logo.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\/c_fill,e_sepia,h_150,w_150\/co_rgb:EECCAA,g_south,l_text:arial_20:Angular,y_20\/a_20\/angular_logo.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/c_fill,e_sepia,h_150,w_150\/co_rgb:EECCAA,g_south,l_text:arial_20:Angular,y_20\/a_20\/angular_logo.jpg\" alt=\"Angular logo chained transformations\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"192\" height=\"192\"\/><\/a><\/p>\n<p>It starts by cropping the image to 150&#215;150 pixels and adds a sepia effect.\nThen it adds a text overlay with the word <code>Angular<\/code> with a specific font type, font size and color, and positions the text at the bottom. Finally, it rotates the result by 20 degrees:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-image<\/span> <span class=\"hljs-attr\">public-id<\/span>=<span class=\"hljs-string\">\"angular_logo\"<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"logo\"<\/span> <span class=\"hljs-attr\">angle<\/span>=<span class=\"hljs-string\">\"20\"<\/span> <span class=\"hljs-attr\">format<\/span>=<span class=\"hljs-string\">\"jpg\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-transformation<\/span> <span class=\"hljs-attr\">height<\/span>=<span class=\"hljs-string\">\"150\"<\/span> <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"150\"<\/span> <span class=\"hljs-attr\">crop<\/span>=<span class=\"hljs-string\">\"fill\"<\/span> <span class=\"hljs-attr\">effect<\/span>=<span class=\"hljs-string\">\"sepia\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-transformation<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-transformation<\/span> <span class=\"hljs-attr\">overlay<\/span>=<span class=\"hljs-string\">\"text:arial_20:Angular\"<\/span> <span class=\"hljs-attr\">color<\/span>=<span class=\"hljs-string\">\"#EECCAA\"<\/span> <span class=\"hljs-attr\">gravity<\/span>=<span class=\"hljs-string\">\"south\"<\/span> <span class=\"hljs-attr\">y<\/span>=<span class=\"hljs-string\">\"20\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-transformation<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-image<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>This will be compiled by Angular to:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">&lt;img <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span><\/span>=<span class=\"hljs-string\">\"logo\"<\/span> _ngcontent_ovt_3=<span class=\"hljs-string\">\"\"<\/span>\n  public_id=<span class=\"hljs-string\">\"angular_logo\"<\/span> \n  ng_reflect_public_id=<span class=\"hljs-string\">\"angular_logo\"<\/span> \n  src=<span class=\"hljs-string\">\"https:\/\/res.cloudinary.com\/eitanpeer\/image\/upload\/c_fill,e_sepia,h_150,w_150\/co_rgb:EECCAA,g_south,l_text:arial_20:Angular,y_20\/a_20\/angular_logo.jpg\"<\/span>&gt;\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><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<h5>Creating video tags with cl-video and cl-transformation<\/h5>\n<p>The <code>cl-video<\/code> component generates a <code>&lt;video&gt;<\/code> tag with the requested transformation, type, and format. The component automatically generates video <code>&lt;source&gt;<\/code> URLs for all formats supported by web browsers (<code>webm<\/code>, <code>mp4<\/code> and <code>ogv<\/code>) as a fallback in case the user\u2019s browser doesn\u2019t support one of them.<\/p>\n<p>The video tag can contain optional <code>cl-transformation<\/code> elements that will be used for <a href=\"https:\/\/cloudinary.com\/documentation\/image_transformations#chained_transformations\">chained transformations<\/a>.<\/p>\n<p>The following example demonstrates creating a video tag with a single transformation.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-video<\/span> <span class=\"hljs-attr\">public-id<\/span>=<span class=\"hljs-string\">\"manipulation_video\"<\/span> <span class=\"hljs-attr\">cloud_name<\/span>=<span class=\"hljs-string\">\"cloudinary\"<\/span> \n   <span class=\"hljs-attr\">controls<\/span>=<span class=\"hljs-string\">\"true\"<\/span> <span class=\"hljs-attr\">preload<\/span>=<span class=\"hljs-string\">\"none\"<\/span> <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"925\"<\/span> <span class=\"hljs-attr\">crop<\/span>=<span class=\"hljs-string\">\"scale\"<\/span> \n   <span class=\"hljs-attr\">autoplay<\/span>=<span class=\"hljs-string\">\"true\"<\/span>  <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"manipulation-video\"<\/span>\n   <span class=\"hljs-attr\">fallback-content<\/span>=<span class=\"hljs-string\">\"Your browser does not support HTML5 video tags\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-transformation<\/span> <span class=\"hljs-attr\">overlay<\/span>=<span class=\"hljs-string\">\"text:arial_20:Cloudinary%20features\"<\/span> \n   <span class=\"hljs-attr\">color<\/span>=<span class=\"hljs-string\">\"red\"<\/span> <span class=\"hljs-attr\">gravity<\/span>=<span class=\"hljs-string\">\"north\"<\/span> <span class=\"hljs-attr\">y<\/span>=<span class=\"hljs-string\">\"12\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-transformation<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-video<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>The component automatically adds the source elements and a poster. The example above is compiled by Angular to:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\">\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">video<\/span> <span class=\"hljs-attr\">_ngcontent-odx-3<\/span>=<span class=\"hljs-string\">\"\"<\/span> <span class=\"hljs-attr\">autoplay<\/span>=<span class=\"hljs-string\">\"true\"<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"manipulation-video\"<\/span> \n   <span class=\"hljs-attr\">controls<\/span>=<span class=\"hljs-string\">\"true\"<\/span> <span class=\"hljs-attr\">preload<\/span>=<span class=\"hljs-string\">\"none\"<\/span> <span class=\"hljs-attr\">publicid<\/span>=<span class=\"hljs-string\">\"manipulation_video\"<\/span> \n   <span class=\"hljs-attr\">ng-reflect-public-id<\/span>=<span class=\"hljs-string\">\"manipulation_video\"<\/span> <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"925\"<\/span>\n   <span class=\"hljs-attr\">poster<\/span>=<span class=\"hljs-string\">\"https:\/\/res.cloudinary.com\/cloudinary\/video\/upload\/co_red,g_north,l_text:arial_20:Cloudinary%20features,y_12\/c_scale,w_925\/manipulation_video.jpg\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">source<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">\"https:\/\/res.cloudinary.com\/cloudinary\/video\/upload\/co_red,g_north,l_text:arial_20:Cloudinary%20features,y_12\/c_scale,w_925\/manipulation_video.webm\"<\/span> \n   <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"video\/webm\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">source<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">\"https:\/\/res.cloudinary.com\/cloudinary\/video\/upload\/co_red,g_north,l_text:arial_20:Cloudinary%20features,y_12\/c_scale,w_925\/manipulation_video.mp4\"<\/span> \n   <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"video\/mp4\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">source<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">\"https:\/\/res.cloudinary.com\/cloudinary\/video\/upload\/co_red,g_north,l_text:arial_20:Cloudinary%20features,y_12\/c_scale,w_925\/manipulation_video.ogv\"<\/span> \n   <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"video\/ogg\"<\/span>&gt;<\/span>\nYour browser does not support HTML5 video tags\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">video<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<h5>Attribute directives for enhancing HTML elements &#8211; clSrc, clHref, clSrcset<\/h5>\n<p>The <code>clSrc<\/code>, <code>clHref<\/code>, and <code>clSrcset<\/code> directives use the element attributes to generate image URLs in Cloudinary.<\/p>\n<p>The following example demonstrates an image thumbnail that displays the full size image when clicked, displaying the full size image optimized with auto quality as a transformation:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a<\/span> <span class=\"hljs-attr\">clHref<\/span>=<span class=\"hljs-string\">{{photo.public_id}}<\/span> <span class=\"hljs-attr\">format<\/span>=<span class=\"hljs-string\">\"jpg\"<\/span> <span class=\"hljs-attr\">target<\/span>=<span class=\"hljs-string\">\"_blank\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-transformation<\/span> <span class=\"hljs-attr\">quality<\/span>=<span class=\"hljs-string\">\"auto\"<\/span> <span class=\"hljs-attr\">fetch-format<\/span>=<span class=\"hljs-string\">\"auto\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-transformation<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cl-image<\/span> <span class=\"hljs-attr\">publicId<\/span>=<span class=\"hljs-string\">{{photo.public_id}}<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"thumbnail inline\"<\/span> <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"150\"<\/span> \n   <span class=\"hljs-attr\">height<\/span>=<span class=\"hljs-string\">\"150\"<\/span> <span class=\"hljs-attr\">crop<\/span>=<span class=\"hljs-string\">\"fit\"<\/span> <span class=\"hljs-attr\">quality<\/span>=<span class=\"hljs-string\">\"80\"<\/span> <span class=\"hljs-attr\">format<\/span>=<span class=\"hljs-string\">\"jpg\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cl-image<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">a<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<h2>Is this an upgrade of the previous Cloudinary AngularJS SDK?<\/h2>\n<p>No. Since Angular itself is a rewrite of AngularJS, the new Angluar SDK is not backwards compatible with Cloudinary\u2019s AngularJS (A.K.A Angular 1) SDK.<\/p>\n<p>However, we are happy to share some tips regarding  the migration path for upgrading your previous AngularJS app using Cloudinary\u2019s SDK to the new one.<\/p>\n<h3>Migration path<\/h3>\n<p>We\u2019ve tried to keep the APIs as close as possible to the original names. We\u2019ve made some changes to conform to Angular\u2019s new style guide.<\/p>\n<ul>\n<li>\n<code>clHref<\/code>, <code>clSrc<\/code>, <code>clSrcset<\/code> &#8211;\nThese directives have been renamed from <code>cl-href<\/code>, <code>cl-src<\/code>, <code>cl-srcset<\/code> to be consistent with [Angular\u2019s directive selector naming guidelines] (<a href=\"https:\/\/angular.io\/styleguide#\">https:\/\/angular.io\/styleguide#<\/a>!#02-06)<\/li>\n<li>\n<code>cl-video<\/code> &#8211;  has been added to the new SDK:<\/li>\n<\/ul>\n<p><strong>Angular 1 SDK<\/strong>:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"> <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a<\/span> <span class=\"hljs-attr\">cl-href<\/span>=<span class=\"hljs-string\">\"{{photo.public_id}}\"<\/span> <span class=\"hljs-attr\">format<\/span>=<span class=\"hljs-string\">\"jpg\"<\/span> <span class=\"hljs-attr\">target<\/span>=<span class=\"hljs-string\">\"_blank\"<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p><strong>Angular 2 SDK<\/strong>:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a<\/span> <span class=\"hljs-attr\">clHref<\/span>=<span class=\"hljs-string\">\"{{photo.public_id}}\"<\/span> <span class=\"hljs-attr\">format<\/span>=<span class=\"hljs-string\">\"jpg\"<\/span> <span class=\"hljs-attr\">target<\/span>=<span class=\"hljs-string\">\"_blank\"<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<h3>Can you share tips and tricks from the upgrade ?<\/h3>\n<p>In addition to the process of upgrading your Cloudinary SDK code, you may want to consider the following as you migrate your  own Angular 1 app to the new version:<\/p>\n<ul>\n<li>Use the <a href=\"https:\/\/angular.io\/docs\/ts\/latest\/cookbook\/a1-a2-quick-reference.html\">Angular 1 to 2 quick reference<\/a> for updating your application\u2019s Angular syntax. Following it will get most of your application ready for Angular2.<\/li>\n<li>Pay special attention to the new <a href=\"https:\/\/angular.io\/docs\/ts\/latest\/guide\/template-syntax.html#!#property-binding\">binding syntax<\/a>. Read it carefully, understand the new mental model and take note of the different binding syntaxes for the different data directions, i.e.\n<ul>\n<li>One-way from data source to view target. There are 3 different styles for this type of binding:\n<ul>\n<li>\n<code>{{expression}}<\/code> (known as \u201cInterpolation\u201d)<\/li>\n<li>\n<code>[target] = &quot;expression&quot;<\/code> (known as \u201cProperty attribute\u201d)<\/li>\n<li>\n<code>bind-target = &quot;expression&quot;<\/code>\n<\/li>\n<\/ul>\n<\/li>\n<li>One-way from view target to data source. There are 2 different styles for this type of binding:\n<ul>\n<li>\n<code>(target) = &quot;statement&quot;<\/code>\n<\/li>\n<li>\n<code>on-target = &quot;statement&quot;<\/code>\n<\/li>\n<\/ul>\n<\/li>\n<li>Two-way. There are 2 different styles for this type of binding:\n<ul>\n<li>\n<code>[(target)] = &quot;expression&quot;<\/code>\n<\/li>\n<li>\n<code>bindon-target = &quot;expression&quot;<\/code>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>A lot of content has already been created for the Angular release candidates. Some do not apply to the final released version. Pay attention to the Angular versions in question and dates in the blog posts and StackOverflow answers you read.<\/li>\n<li>Check out this <a href=\"https:\/\/github.com\/AngularClass\/awesome-angular2\">curated list of awesome Angular 2 resources by @AngularClass<\/a>. It has a lot of references for deep diving into Angular\u2019s new architecture and implementation.<\/li>\n<\/ul>\n<h2>Anything else?<\/h2>\n<p>Yes. I\u2019m glad you asked.<\/p>\n<p>We\u2019ve created sample projects for the SDK, demonstrating different capabilities and options.\nIn addition, we\u2019ve created a plunker so you can get up and running in no time, without any setup!<\/p>\n<p>The sample projects have the same functionality &#8211; a photo list displaying a list of images that respond to a predefined tag, and <a href=\"https:\/\/cloudinary.com\/blog\/automating_file_upload_and_sharing\">file upload<\/a> page for adding images to the list.<\/p>\n<p>The projects differ in their bundling solutions and image upload mechanisms:<\/p>\n<h3><a href=\"https:\/\/github.com\/cloudinary\/cloudinary_angular\/tree\/angular_next\/samples\/photo_album\">Photo Album<\/a><\/h3>\n<p>This project uses:<\/p>\n<ul>\n<li>\n<a href=\"https:\/\/github.com\/valor-software\/ng2-file-upload\">ng2-file-upload<\/a> for uploading files using an open source file uploader<\/li>\n<li>\n<a href=\"https:\/\/webpack.github.io\/\">Webpack<\/a> for bundling and serving the application<\/li>\n<\/ul>\n<h3><a href=\"https:\/\/github.com\/cloudinary\/cloudinary_angular\/tree\/angular_next\/samples\/photo_album_with_jquery\">Photo Album with jQuery<\/a><\/h3>\n<p>This project uses:<\/p>\n<ul>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/direct_upload_made_easy_from_browser_or_mobile_app_to_the_cloud#direct_uploading_from_the_browser_using_jquery\">Cloudinary\u2019s jQuery plugin<\/a> for uploading files using jQuery and blueimp<\/li>\n<li>\n<a href=\"https:\/\/github.com\/systemjs\/systemjs\">SystemJS<\/a> for bundling the application<\/li>\n<li>\n<a href=\"https:\/\/github.com\/johnpapa\/lite-server\">lite-server<\/a> as the web server serving the application<\/li>\n<\/ul>\n<h3><a href=\"https:\/\/github.com\/cloudinary\/cloudinary_angular\/tree\/angular_next\/samples\/photo_album_aot\">Photo Album AOT application<\/a><\/h3>\n<p>This project demonstrates how the Cloudinary SDK could be used in an Angular application created by Angular\u2019s <a href=\"https:\/\/angular.io\/docs\/ts\/latest\/cookbook\/aot-compiler.html\">Ahead of Time compiler<\/a>. It uses:<\/p>\n<ul>\n<li>Angular\u2019s template  compiler for ahead-of-time compilation of the application<\/li>\n<li>\n<a href=\"https:\/\/github.com\/rollup\/rollup\">Rollup<\/a> for bundling the application<\/li>\n<li>\n<a href=\"https:\/\/github.com\/johnpapa\/lite-server\">lite-server<\/a> as the web server serving the application<\/li>\n<\/ul>\n<h3>Plunker<\/h3>\n<p>The <a href=\"https:\/\/embed.plnkr.co\/e4GuRg\">plunker code sample<\/a> is configured to use Cloudinary\u2019s <code>demo<\/code> cloud, and demonstrates usage of <code>&lt;cl-image&gt;<\/code> tags. Feel free to fork it and experiment with your own cloud credentials.<\/p>\n<iframe loading=\"lazy\" style=\"border: 1px solid #999;width: 100%; height: 500px\"\n        src=\"https:\/\/embed.plnkr.co\/e4GuRg\" frameborder=\"0\"\n        allowfullscreen=\"allowfullscreen\">\n  Loading plunk&#8230;\n<\/iframe>\n<h2>Summary<\/h2>\n<p><a href=\"http:\/\/www.imdb.com\/title\/tt0094142\/quotes?item=qt3010733\">Whether the night was moist, humid, or sultry<\/a> the main thing here is that you can easily integrate Cloudinary into your Angular application with the new SDK.<\/p>\n<p>These are the basics:<\/p>\n<ul>\n<li>\n<p>Use <code>cl-image<\/code> and <code>cl-transformation<\/code> for expressively serving images from your Cloudinary account.<\/p>\n<\/li>\n<li>\n<p>Use <code>cl-video<\/code> and <code>cl-transformation<\/code> for expressively serving videos from your Cloudinary account, setting up multiple sources for different browsers automatically.<\/p>\n<\/li>\n<li>\n<p>Use <code>clSrc<\/code>, <code>clHref<\/code> or <code>clSrcset<\/code> for enhancing native HTML elements to serve images from your Cloudinary account.<\/p>\n<\/li>\n<\/ul>\n<p>For more detail on all available Cloudinary Angular directives and components, see <a href=\"https:\/\/github.com\/cloudinary\/cloudinary_angular\/tree\/angular_next\">the SDK documentation<\/a><\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21459,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[119,124,165,177,227,263,305],"class_list":["post-21458","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-file-upload","tag-frameworks","tag-image-transformation","tag-javascript","tag-performance-optimization","tag-sdk","tag-video-api"],"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>Cloudinary Angular 2 Image and Video SDK<\/title>\n<meta name=\"description\" content=\"Cloudinary integrates with your Angular 2 projects through an SDK, enabling you to upload, display and transform images and video using a powerful API\" \/>\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\/new_angular_sdk_for_image_management_more_than_meets_the_eye\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"New Angular SDK for image management - More than meets the eye\" \/>\n<meta property=\"og:description\" content=\"Cloudinary integrates with your Angular 2 projects through an SDK, enabling you to upload, display and transform images and video using a powerful API\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-18T14:04:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-05T23:19:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649718759\/Web_Assets\/blog\/angular_sdk\/angular_sdk-png?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1540\" \/>\n\t<meta property=\"og:image:height\" content=\"1224\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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\/new_angular_sdk_for_image_management_more_than_meets_the_eye#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"New Angular SDK for image management &#8211; More than meets the eye\",\"datePublished\":\"2017-01-18T14:04:05+00:00\",\"dateModified\":\"2024-06-05T23:19:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye\"},\"wordCount\":12,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718759\/Web_Assets\/blog\/angular_sdk\/angular_sdk.png?_i=AA\",\"keywords\":[\"File-upload\",\"Frameworks\",\"Image Transformation\",\"Javascript\",\"Performance Optimization\",\"SDK\",\"Video API\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2017\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye\",\"url\":\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye\",\"name\":\"Cloudinary Angular 2 Image and Video SDK\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718759\/Web_Assets\/blog\/angular_sdk\/angular_sdk.png?_i=AA\",\"datePublished\":\"2017-01-18T14:04:05+00:00\",\"dateModified\":\"2024-06-05T23:19:18+00:00\",\"description\":\"Cloudinary integrates with your Angular 2 projects through an SDK, enabling you to upload, display and transform images and video using a powerful API\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718759\/Web_Assets\/blog\/angular_sdk\/angular_sdk.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718759\/Web_Assets\/blog\/angular_sdk\/angular_sdk.png?_i=AA\",\"width\":1540,\"height\":1224},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"New Angular SDK for image management &#8211; More than meets the eye\"}]},{\"@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":"Cloudinary Angular 2 Image and Video SDK","description":"Cloudinary integrates with your Angular 2 projects through an SDK, enabling you to upload, display and transform images and video using a powerful API","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\/new_angular_sdk_for_image_management_more_than_meets_the_eye","og_locale":"en_US","og_type":"article","og_title":"New Angular SDK for image management - More than meets the eye","og_description":"Cloudinary integrates with your Angular 2 projects through an SDK, enabling you to upload, display and transform images and video using a powerful API","og_url":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye","og_site_name":"Cloudinary Blog","article_published_time":"2017-01-18T14:04:05+00:00","article_modified_time":"2024-06-05T23:19:18+00:00","og_image":[{"width":1540,"height":1224,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649718759\/Web_Assets\/blog\/angular_sdk\/angular_sdk-png?_i=AA","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye"},"author":{"name":"","@id":""},"headline":"New Angular SDK for image management &#8211; More than meets the eye","datePublished":"2017-01-18T14:04:05+00:00","dateModified":"2024-06-05T23:19:18+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye"},"wordCount":12,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718759\/Web_Assets\/blog\/angular_sdk\/angular_sdk.png?_i=AA","keywords":["File-upload","Frameworks","Image Transformation","Javascript","Performance Optimization","SDK","Video API"],"inLanguage":"en-US","copyrightYear":"2017","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye","url":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye","name":"Cloudinary Angular 2 Image and Video SDK","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718759\/Web_Assets\/blog\/angular_sdk\/angular_sdk.png?_i=AA","datePublished":"2017-01-18T14:04:05+00:00","dateModified":"2024-06-05T23:19:18+00:00","description":"Cloudinary integrates with your Angular 2 projects through an SDK, enabling you to upload, display and transform images and video using a powerful API","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718759\/Web_Assets\/blog\/angular_sdk\/angular_sdk.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718759\/Web_Assets\/blog\/angular_sdk\/angular_sdk.png?_i=AA","width":1540,"height":1224},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/new_angular_sdk_for_image_management_more_than_meets_the_eye#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"New Angular SDK for image management &#8211; More than meets the eye"}]},{"@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\/v1649718759\/Web_Assets\/blog\/angular_sdk\/angular_sdk.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21458","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=21458"}],"version-history":[{"count":5,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21458\/revisions"}],"predecessor-version":[{"id":34435,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21458\/revisions\/34435"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21459"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21458"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21458"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}