{"id":21724,"date":"2018-04-11T18:35:32","date_gmt":"2018-04-11T18:35:32","guid":{"rendered":"http:\/\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary"},"modified":"2018-04-11T18:35:32","modified_gmt":"2018-04-11T18:35:32","slug":"shortening_the_development_cycle_of_media_related_apps_with_cloudinary","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary","title":{"rendered":"Shortening the Development Cycle of Media-Related Apps"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>Currently, the Android platform boasts the highest demand for mobile solutions, as evidenced by Google\u2019s announcement in 2017 that there were two billion monthly active Android devices, a number that is likely to increase in the years ahead. For app developers like you, now is the right time to build and release solutions for Android. you might have also noticed that a higher percentage of apps being developed nowadays are filled with visual media: images and videos.<\/p>\n<p>The challenges of managing image and videos on Android are well known. It is for that reason that libraries such as Glide, Picasso, and ExoPlayer (for videos) became available with the aim of accelerating the loading process and better managing device memory. Are those libraries meeting your needs? Yes? Excellent! So you ask: <strong>What then is the problem?<\/strong> Read on.<\/p>\n<h2>The Challenge of Efficiently Delivering Images<\/h2>\n<p>An increasing number of resources used by app developers are from Web services and other remote locations, which limits your visibility into important information about the image, such as size. Imagine a 5616 x 3744 image being served to you, which you must then serve to your audience. With an image library, loading the image a second time (from the cache) might be a smooth sail. However, loading it for the first time before compression and caching might require an inordinate amount of time and bandwidth. Even now in the 21st Century, reliable broadband connections are virtually nonexistent in some countries, in which case your users there might find themselves staring at an empty screen or a perpetual holder image across the entire app for long minutes.<\/p>\n<p>With Cloudinary\u2019s robust solution, you can bypass that issue. Cloudinary offers too many features to describe in a single blog post. This one focuses on Cloudinary\u2019s <a href=\"https:\/\/cloudinary.com\/documentation\/image_optimization\">image optimization<\/a> capabilities only.<\/p>\n<h2>A Test of Resource Usage and an Analysis of the Results<\/h2>\n<p>We just performed a test to check the resource usage in a device\u2014before and after Cloudinary. We loaded a large image into an app <strong>without<\/strong> Cloudinary and then did the same with Cloudinary in order to evaluate a worst-case scenario. The device in question is a Samsung SM-GF32F with a RAM capacity of 1.5 GB. Finally, we measured the metrics with the Android Profiler.<\/p>\n<p>Loading that unoptimized image took about 13 seconds, resulting in high CPU and network activity and a memory usage of 48 MB. More details are in the image below.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_700,c_fill\/dpr_auto\/Metrics-unoptimized-image.png\" alt=\"Metrics of an un-optimized image\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"403\"\/><\/p>\n<p>Loading an optimized image yielded these results:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_700,c_fill\/dpr_auto\/Metrics-optimized-image.png\" alt=\"Metrics of an optimized image\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"376\"\/><\/p>\n<p>The optimized image loaded in only four seconds, using up 23 MB of RAM and minimal network and CPU activity. Those are important metrics to take note. Because many Websites display numerous images, optimizing the latter would significantly shorten the download time and deliver a boost in user experience.<\/p>\n<h2>Process of Optimization<\/h2>\n<p>By leveraging Cloudinary\u2019s impressive optimization capabilities, we were able to effectively optimize the image while  still maintaining excellent image quality. Specifically, we employed these three techniques in Cloudinary:<\/p>\n<ul>\n<li>Reduction of mage widths<\/li>\n<li>Automatic format selection<\/li>\n<li>Automatic quality selection<\/li>\n<\/ul>\n<p>We achieved optimization by adding this code snippet:<\/p>\n<p><strong>Java:<\/strong><\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\">    <span class=\"hljs-selector-tag\">MediaManager<\/span><span class=\"hljs-selector-class\">.get<\/span>()<span class=\"hljs-selector-class\">.url<\/span>()\n            <span class=\"hljs-selector-class\">.transformation<\/span>(<span class=\"hljs-selector-tag\">new<\/span> <span class=\"hljs-selector-tag\">Transformation<\/span>()<span class=\"hljs-selector-class\">.width<\/span>(500)<span class=\"hljs-selector-class\">.quality<\/span>(\"<span class=\"hljs-selector-tag\">auto<\/span>\")<span class=\"hljs-selector-class\">.fetchFormat<\/span>(\"<span class=\"hljs-selector-tag\">auto<\/span>\"))<span class=\"hljs-selector-class\">.generate<\/span>(\"<span class=\"hljs-selector-tag\">dog<\/span><span class=\"hljs-selector-class\">.png<\/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\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p><strong>Kotlin:<\/strong><\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\">    <span class=\"hljs-selector-tag\">MediaManager<\/span><span class=\"hljs-selector-class\">.get<\/span>()<span class=\"hljs-selector-class\">.url<\/span>()\n            <span class=\"hljs-selector-class\">.transformation<\/span>(<span class=\"hljs-selector-tag\">Transformation<\/span>&lt;<span class=\"hljs-selector-tag\">Transformation<\/span>&lt;<span class=\"hljs-selector-tag\">out<\/span> <span class=\"hljs-selector-tag\">Transformation<\/span>&lt;*&gt;&gt;?&gt;()<span class=\"hljs-selector-class\">.width<\/span>(500)!!<span class=\"hljs-selector-class\">.quality<\/span>(\"<span class=\"hljs-selector-tag\">auto<\/span>\")<span class=\"hljs-selector-class\">.fetchFormat<\/span>(\"<span class=\"hljs-selector-tag\">auto<\/span>\"))\n            <span class=\"hljs-selector-class\">.generate<\/span>(\"<span class=\"hljs-selector-tag\">dog<\/span><span class=\"hljs-selector-class\">.png<\/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\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>The parameter values in the above code  are all defaults. In addition, Cloudinary contains an  algorithm that scales the quality of images. For more details  on image optimizations, see [this section] (<a href=\"https:\/\/cloudinary.com\/documentation\/image_optimization\">https:\/\/cloudinary.com\/documentation\/image_optimization<\/a>) in the Cloudinary documentation.<\/p>\n<h2>Conclusion<\/h2>\n<p>With Cloudinary, you can appropriately scale images, thereby reducing the bandwidth in  a device\u2019s memory and CPU and shortening app-development cycles. Try it out for yourself; you\u2019ll be impressed.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21725,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[333,165,202,227,305],"class_list":["post-21724","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-android","tag-image-transformation","tag-mobile","tag-performance-optimization","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>Shortening the Development Cycle of Media-Related Apps<\/title>\n<meta name=\"description\" content=\"Learn how to reduce the development cycle of media-app with Cloudinary\u2019s image-optimization capabilities.\" \/>\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\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Shortening the Development Cycle of Media-Related Apps\" \/>\n<meta property=\"og:description\" content=\"Learn how to reduce the development cycle of media-app with Cloudinary\u2019s image-optimization capabilities.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-11T18:35:32+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/cloudinary.com\/blog\/wp-content\/uploads\/sites\/12\/2022\/02\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1540\" \/>\n\t<meta property=\"og:image:height\" content=\"847\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/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\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Shortening the Development Cycle of Media-Related Apps\",\"datePublished\":\"2018-04-11T18:35:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary\"},\"wordCount\":7,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723381\/Web_Assets\/blog\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1.png?_i=AA\",\"keywords\":[\"Android\",\"Image Transformation\",\"Mobile\",\"Performance Optimization\",\"Video API\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2018\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary\",\"url\":\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary\",\"name\":\"Shortening the Development Cycle of Media-Related Apps\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723381\/Web_Assets\/blog\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1.png?_i=AA\",\"datePublished\":\"2018-04-11T18:35:32+00:00\",\"description\":\"Learn how to reduce the development cycle of media-app with Cloudinary\u2019s image-optimization capabilities.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723381\/Web_Assets\/blog\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723381\/Web_Assets\/blog\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1.png?_i=AA\",\"width\":1540,\"height\":847},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Shortening the Development Cycle of Media-Related Apps\"}]},{\"@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":"Shortening the Development Cycle of Media-Related Apps","description":"Learn how to reduce the development cycle of media-app with Cloudinary\u2019s image-optimization capabilities.","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\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary","og_locale":"en_US","og_type":"article","og_title":"Shortening the Development Cycle of Media-Related Apps","og_description":"Learn how to reduce the development cycle of media-app with Cloudinary\u2019s image-optimization capabilities.","og_url":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary","og_site_name":"Cloudinary Blog","article_published_time":"2018-04-11T18:35:32+00:00","og_image":[{"width":1540,"height":847,"url":"http:\/\/cloudinary.com\/blog\/wp-content\/uploads\/sites\/12\/2022\/02\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1.png","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary"},"author":{"name":"","@id":""},"headline":"Shortening the Development Cycle of Media-Related Apps","datePublished":"2018-04-11T18:35:32+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary"},"wordCount":7,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723381\/Web_Assets\/blog\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1.png?_i=AA","keywords":["Android","Image Transformation","Mobile","Performance Optimization","Video API"],"inLanguage":"en-US","copyrightYear":"2018","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary","url":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary","name":"Shortening the Development Cycle of Media-Related Apps","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723381\/Web_Assets\/blog\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1.png?_i=AA","datePublished":"2018-04-11T18:35:32+00:00","description":"Learn how to reduce the development cycle of media-app with Cloudinary\u2019s image-optimization capabilities.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723381\/Web_Assets\/blog\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723381\/Web_Assets\/blog\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1.png?_i=AA","width":1540,"height":847},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/shortening_the_development_cycle_of_media_related_apps_with_cloudinary#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Shortening the Development Cycle of Media-Related Apps"}]},{"@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\/v1649723381\/Web_Assets\/blog\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1\/Shorten_Media-related_App_Dev_Time_2000x1100_v4_1.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21724","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=21724"}],"version-history":[{"count":0,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21724\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21725"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21724"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21724"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21724"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}