{"id":26022,"date":"2023-01-03T07:00:00","date_gmt":"2023-01-03T14:00:00","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=26022"},"modified":"2025-02-23T14:51:58","modified_gmt":"2025-02-23T22:51:58","slug":"managing-images-programmatically-with-cloudinary-ios","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios","title":{"rendered":"Managing Images Programmatically with Cloudinary \u2014 iOS"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>The Problem<\/strong><\/h2>\n\n\n\n<p id=\"2c73\">In one of my previous jobs, I was responsible for an application that allows you as the user to download images into their phone and set them as a background for the home screen, lock screen, or both.This application requires pulling big JSON files with all the image information, each image having multiple fields such as title, URL, created date, etc\u2026<\/p>\n\n\n\n<p id=\"08c8\">On the main screen, I had to present a thumbnail (A thumbnail is a small <a href=\"https:\/\/cloudinary.com\/glossary\/image-representation\">image representation<\/a> of a larger image) of each image.Tapping a thumbnail will direct the user to a screen where the image is shown full screen.<\/p>\n\n\n\n<p id=\"edbb\">These 2 screens already required multiple versions of the same image. Since you can&#8217;t present a full-screen image with a thumbnail image because you\u2019ll get a pixelated result which yields a bad user experience. On the other hand, We don&#8217;t want to present the full-screen image on the main screen (where we show many images on a screen) because it\u2019ll cause a long load time of the screen. Which is again a bad user experience.<\/p>\n\n\n\n<p id=\"84df\">Other than that, each image has various sizes that we need to present, and let us not forget that the application supports multiple devices with different screen sizes, iPhones, iPads, and iPods which require different sizes of the image.<\/p>\n\n\n\n<p id=\"7784\">So how can we handle this? We have one image, but we need it in many different sizes. We can take it on the client side and manipulate the image on the device but that won&#8217;t be efficient.<\/p>\n\n\n\n<p id=\"78c5\">We can ask our server-side (if we have one) to give us multiple URLs for each image but that will make the JSON response huge and hard to handle.<\/p>\n\n\n\n<p id=\"a8cc\">This is where Cloudinary comes in.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The Solution<\/strong><\/h2>\n\n\n\n<p id=\"fa71\">As you might have guessed the solution will be Cloudinary.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What is Cloudinary<\/strong><\/h2>\n\n\n\n<p id=\"7ccd\">Cloudinary is a platform that allows you to quickly and easily create, manage and deliver digital experiences across any browser, device, and bandwidth.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to use Cloudinary<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Setup<\/strong><\/h3>\n\n\n\n<p id=\"d927\">The first thing you\u2019ll need to do is go to the Cloudinary&nbsp;<a href=\"http:\/\/www.cloudinary.com\/\" rel=\"noreferrer noopener\" target=\"_blank\">website<\/a>&nbsp;and sign-up for a free account. You can find the git repository for the iOS SDK&nbsp;<a href=\"https:\/\/github.com\/cloudinary\/cloudinary_ios\" rel=\"noreferrer noopener\" target=\"_blank\">here<\/a>. To integrate Cloudinary into your app you can use:<\/p>\n\n\n\n<p id=\"f9d9\"><em>CocoaPods:<\/em><\/p>\n\n\n\n<p id=\"f9d9\"><code>pod 'Cloudinary', '~&gt; 3.0'<\/code><\/p>\n\n\n\n<p id=\"7f8f\"><em>Carthage:<\/em><\/p>\n\n\n\n<p id=\"7f8f\"><code>github \"cloudinary\/cloudinary_ios\" ~&gt; 3.0<\/code><\/p>\n\n\n\n<p id=\"e75f\"><em>Swift package manager:<\/em><\/p>\n\n\n\n<p id=\"e75f\"><a href=\"https:\/\/github.com\/cloudinary\/cloudinary_ios.git\" target=\"_blank\" rel=\"noreferrer noopener\"><code>https:\/\/github.com\/cloudinary\/cloudinary_ios.git<\/code><\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Configuration<\/strong><\/h3>\n\n\n\n<p id=\"4dc3\">Once the package is integrated, we\u2019ll need to set up our Cloudinary object.<br>Your API-Key and Cloud-Name will appear in the dashboard where you created your account.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img width=\"1024\" height=\"279\" data-public-id=\"1_-QjSexZhwANrrqi6qSoosQ\/1_-QjSexZhwANrrqi6qSoosQ.gif\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/w_1024,h_279,c_scale\/f_auto,q_auto\/v1670621950\/1_-QjSexZhwANrrqi6qSoosQ\/1_-QjSexZhwANrrqi6qSoosQ.gif?_i=AA\" alt=\"\" class=\"wp-post-26022 wp-image-26027\" data-format=\"gif\" data-transformations=\"f_auto,q_auto\" data-version=\"1670621950\" data-seo=\"1\" \/><\/figure>\n\n\n\n<script src=\"https:\/\/gist.github.com\/mizadi\/171b0a3b526a3a36e2e35ee083312eda.js\"><\/script>\n\n\n\n<p id=\"889d\">Once we have our Cloudinary object set and ready to use, this is where the&nbsp;<strong>MAGIC&nbsp;<\/strong>starts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Upload your assets<\/strong><\/h3>\n\n\n\n<p id=\"c5f5\">There are multiple ways to upload an asset to your cloud, via the API or the UI<br>UI \u2014 it\u2019s as simple as dragging and dropping into your cloud.<br>API \u2014 You can upload through the code:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/mizadi\/73cedb84b95077de36e35f5ec7b0432c.js\"><\/script>\n\n\n\n<p id=\"a1e0\">The only thing we\u2019re missing here is the&nbsp;<em>upload preset.<\/em>&nbsp;An upload preset is a field we need to set through the UI. You can do this by going to the Cloudinary&nbsp;<a href=\"http:\/\/www.cloudinary.com\/\" rel=\"noreferrer noopener\" target=\"_blank\">website<\/a>, signing in, and clicking the settings icon at the top right. Click the upload option, scroll down and add a new upload preset, There are many options to customize an upload preset but I\u2019m not going to dive into them in this blog. Check out the&nbsp;<a href=\"http:\/\/training.cloudinary.com\/\" rel=\"noreferrer noopener\" target=\"_blank\">Cloudinary Academy<\/a>&nbsp;to learn more about what\u2019s possible with Cloudinary\u2019s APIs.<\/p>\n\n\n\n<p id=\"724d\">Once the&nbsp;<em>upload preset<\/em>&nbsp;is created, be sure to put its name in the upload preset field in the&nbsp;<code>upload<\/code>function. Yes, it\u2019s as simple as that to upload an asset to your cloud, once the image is there we can start using transformations!<br>Transformations are manipulations we can perform on an asset (image, video, etc\u2026) there are many transformations and if you want to learn more than the examples I show here I suggest visiting Cloudinary\u2019s&nbsp;<a href=\"https:\/\/cloudinary.com\/documentation\/image_transformations\" rel=\"noreferrer noopener\" target=\"_blank\">documentation<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Transformations<\/strong><\/h3>\n\n\n\n<p id=\"3b69\">At the start of this article, I presented the problem where we have one asset, but we need it in many different sizes and aspect ratios. Let\u2019s see how we can achieve that very easily using Cloudinary\u2019s transformations: (I\u2019m going to use an asset called sample)<\/p>\n\n\n\n<p id=\"f99a\">The original image:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/test123\/image\/upload\/sample\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Crop<\/strong><\/h3>\n\n\n\n<p id=\"7c74\">We want to create a thumbnail(250&#215;250) for our main screen:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/mizadi\/c23db49be159393a52d10b36d3e3a061.js\"><\/script>\n\n\n\n<p id=\"1636\">Let me explain the code line above. We\u2019re using the&nbsp;<code>cloudinary<\/code>&nbsp;object we created before, we call the&nbsp;<code>createUrl()<\/code>&nbsp;function and set a new transformation where we give all the parameters we want to modify in the image. Lastly, we call&nbsp;<code>generate<\/code>&nbsp;with the asset name (sample).<br>This line of code will produce the following&nbsp;<a href=\"https:\/\/res.cloudinary.com\/test123\/image\/upload\/c_crop,h_250,w_250\/sample\" target=\"_blank\" rel=\"noreferrer noopener\">URL<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/test123\/image\/upload\/c_crop,h_250,w_250\/sample\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"32db\">As we can see we got the 250&#215;250 thumbnail we wanted, but the result could be improved. The \u201cbee\u201d which is the most interesting object in the image is cut off. What can we do? OH! Cloudinary has a few more tricks up its sleeve! Another COOL feature we can use \u201cgravity\u201d where we can ask Cloudinary to focus on the most interesting object in the image.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Gravity<\/strong><\/h3>\n\n\n\n<script src=\"https:\/\/gist.github.com\/mizadi\/838db6199655650c498fe3001461b2dd.js\"><\/script>\n\n\n\n<p id=\"6e89\">The output&nbsp;<a href=\"https:\/\/res.cloudinary.com\/test123\/image\/upload\/c_crop,h_250,w_250,g_auto\/sample\" target=\"_blank\" rel=\"noreferrer noopener\">URL<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/test123\/image\/upload\/c_crop,h_250,w_250,g_auto\/sample\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"cd20\">And as we can see the result is much better. The focus is on the bee.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Quality<\/strong><\/h3>\n\n\n\n<p id=\"44e3\">Let\u2019s try another scenario. We have a 2k image, which is quite a large file, and we don&#8217;t need it in its best form when we\u2019re presenting it on the device. Roaming can\u2019t always handle big bandwidth. To make the image lighter we can use the Cloudinary \u201cquality\u201d feature.<\/p>\n\n\n\n<p id=\"bdf7\">Here\u2019s the original image (it weighs 5MB which is quite a large file)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1670621867\/1_HpUTrbn68UtT4QEEzwmcqQ.webp\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"aecb\">With Cloudinary we can do the following:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/mizadi\/b25bde68b828d85aff57e829be42dd1b.js\"><\/script>\n\n\n\n<p id=\"3b6c\">This code will produce the following&nbsp;<a href=\"https:\/\/res.cloudinary.com\/db0edm7to\/image\/upload\/q_auto\/big_image_sample\" target=\"_blank\" rel=\"noreferrer noopener\">URL<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/db0edm7to\/image\/upload\/q_auto\/big_image_sample\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"bab4\">And it weighs 626.56 KB. We reduced the size by a lot, and it\u2019ll be easier to get this image on a mobile device.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">To Sum Up<\/h2>\n\n\n\n<p id=\"0a58\">As we saw in the blog, Cloudinary can answer the requirement to handle the same asset in many sizes and qualities. Not only that it has many other features! I encourage you to visit the&nbsp;<a href=\"https:\/\/cloudinary.com\/documentation\/\" rel=\"noreferrer noopener\" target=\"_blank\">documentation<\/a>&nbsp;website to get the best out of the platform.<\/p>\n\n\n\n<p id=\"df07\">The Cloudinary SDK can also be found on&nbsp;<a href=\"https:\/\/github.com\/cloudinary\/cloudinary_android\" rel=\"noreferrer noopener\" target=\"_blank\">Android<\/a>&nbsp;and 14 more languages you can find at&nbsp;<a href=\"https:\/\/github.com\/cloudinary\" rel=\"noreferrer noopener\" target=\"_blank\">Cloudinary\u2019s git<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Problem In one of my previous jobs, I was responsible for an application that allows you as the user to download images into their phone and set them as a background for the home screen, lock screen, or both.This application requires pulling big JSON files with all the image information, each image having multiple [&hellip;]<\/p>\n","protected":false},"author":54,"featured_media":26023,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[25,165],"class_list":["post-26022","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-asset-management","tag-image-transformation"],"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>Managing Images Programmatically with Cloudinary \u2014 iOS<\/title>\n<meta name=\"description\" content=\"Learn how to transform, optimize, and crop media with Cloudinary for the best user experience on iOS platforms.\" \/>\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\/managing-images-programmatically-with-cloudinary-ios\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Managing Images Programmatically with Cloudinary \u2014 iOS\" \/>\n<meta property=\"og:description\" content=\"Learn how to transform, optimize, and crop media with Cloudinary for the best user experience on iOS platforms.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-03T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-23T22:51:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1670620589\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS-png?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1100\" \/>\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\/managing-images-programmatically-with-cloudinary-ios#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Managing Images Programmatically with Cloudinary \u2014 iOS\",\"datePublished\":\"2023-01-03T14:00:00+00:00\",\"dateModified\":\"2025-02-23T22:51:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios\"},\"wordCount\":1054,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1670620589\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS.png?_i=AA\",\"keywords\":[\"Asset Management\",\"Image Transformation\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2023\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios\",\"url\":\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios\",\"name\":\"Managing Images Programmatically with Cloudinary \u2014 iOS\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1670620589\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS.png?_i=AA\",\"datePublished\":\"2023-01-03T14:00:00+00:00\",\"dateModified\":\"2025-02-23T22:51:58+00:00\",\"description\":\"Learn how to transform, optimize, and crop media with Cloudinary for the best user experience on iOS platforms.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1670620589\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1670620589\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS.png?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Managing Images Programmatically with Cloudinary \u2014 iOS\"}]},{\"@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":"Managing Images Programmatically with Cloudinary \u2014 iOS","description":"Learn how to transform, optimize, and crop media with Cloudinary for the best user experience on iOS platforms.","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\/managing-images-programmatically-with-cloudinary-ios","og_locale":"en_US","og_type":"article","og_title":"Managing Images Programmatically with Cloudinary \u2014 iOS","og_description":"Learn how to transform, optimize, and crop media with Cloudinary for the best user experience on iOS platforms.","og_url":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios","og_site_name":"Cloudinary Blog","article_published_time":"2023-01-03T14:00:00+00:00","article_modified_time":"2025-02-23T22:51:58+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1670620589\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS-png?_i=AA","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios"},"author":{"name":"","@id":""},"headline":"Managing Images Programmatically with Cloudinary \u2014 iOS","datePublished":"2023-01-03T14:00:00+00:00","dateModified":"2025-02-23T22:51:58+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios"},"wordCount":1054,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1670620589\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS.png?_i=AA","keywords":["Asset Management","Image Transformation"],"inLanguage":"en-US","copyrightYear":"2023","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios","url":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios","name":"Managing Images Programmatically with Cloudinary \u2014 iOS","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1670620589\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS.png?_i=AA","datePublished":"2023-01-03T14:00:00+00:00","dateModified":"2025-02-23T22:51:58+00:00","description":"Learn how to transform, optimize, and crop media with Cloudinary for the best user experience on iOS platforms.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1670620589\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1670620589\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS.png?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/managing-images-programmatically-with-cloudinary-ios#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Managing Images Programmatically with Cloudinary \u2014 iOS"}]},{"@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\/v1670620589\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS\/Cld_Blog_FeatImg_Dec2k22_Manage-Image-iOS.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/26022","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\/54"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=26022"}],"version-history":[{"count":37,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/26022\/revisions"}],"predecessor-version":[{"id":36983,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/26022\/revisions\/36983"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/26023"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=26022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=26022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=26022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}