{"id":39583,"date":"2025-12-16T07:00:00","date_gmt":"2025-12-16T15:00:00","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=39583"},"modified":"2025-12-16T14:26:40","modified_gmt":"2025-12-16T22:26:40","slug":"build-holiday-card-collages","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages","title":{"rendered":"Build Holiday Card Collages With One Line of Code"},"content":{"rendered":"\n<p>In this article, I&#8217;m not going to show you much code. Instead, I&#8217;m going to show you how you can build a holiday card collage, complete with a ribbon footer with text, a background, and 5 styled photos with rounded, colored borders in <em>one line<\/em> using the magic of Cloudinary&#8217;s image transformations.<\/p>\n\n\n\n<p>This is way cool, so buckle up and let me show you how I built this URL-generating app for your holiday card-sending needs. You can try it right now <a href=\"https:\/\/photocardmaker.netlify.app\/\">here<\/a>; it generates cards that look like this:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1765398484\/blog-Build_Holiday_Card_Collages_With_1_Line_of_Code-1.png\" alt=\"Holiday Card with a collage of five different images. The collage URL is at the bottom.\"\/><\/figure><\/div>\n\n\n<p>Maybe this tool will even save you some money as printing photo-quality holiday cards can get expensive!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Build an App, Any App<\/h2>\n\n\n\n<p>I have been enjoying building Astro apps, and, let&#8217;s face it, using Cursor makes architecting this sort of thing a real breeze. Use your favorite AI tool to craft an app that will allow you to upload five photos to Cloudinary, rearrange them, and generate a URL to build the holiday card.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1765398484\/blog-Build_Holiday_Card_Collages_With_1_Line_of_Code-2.png\" alt=\"Family Holiday Collage Maker. There's a Click to upload or drag and drop section a maximum of five images in PNG, JPG, or GIF formats up to 10MB each.\"\/><\/figure><\/div>\n\n<div class='c-callout  c-callout--inline-title c-callout--tip'><strong class='c-callout__title'>Tip:<\/strong> <p>If you are looking to quickly scaffold an app via prompting in Cursor or your IDE of choice, you can get better results by using two tools: ChatGPT to build the prompt, and Cursor to execute it.<\/p>\n<\/div>\n\n\n<p>My initial lazy half-baked idea sent over to ChatGPT:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u201cwhat kind of demo could I build to create a holiday photo card maker for cloudinary\u201d<\/p>\n<\/blockquote>\n\n\n\n<p>ChatGPT, of course, thought I wanted it to build an app for me, and went straight to scaffolding a Next.js app with code everywhere. A few clarifications later, after requesting Astro for use in Cursor&#8230;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u201ccreate this as a prompt I can give to cursor\u201d<\/p>\n<\/blockquote>\n\n\n\n<p>&#8230;ChatGPT generated a really nice, detailed prompt ready for building which you can read in full <a href=\"https:\/\/gist.github.com\/jlooper\/cf5e18996ce86d00b5393de25fb0b017\">here<\/a>.<\/p>\n\n\n\n<p>By having this kind of very detailed prompt, Cursor is able to build a perfectly reasonable app on the first try. Then it&#8217;s up to the engineer to tweak it, redesign it, and add elements while keeping the core functionality of uploading and URL-building intact.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Add Some Extras and Get Ready to Upload<\/h2>\n\n\n\n<p>I went ahead and changed the app colors for a wintry, cozy look, adding some falling snow, a popup elf with changing holiday messages (can you find him?), glowing lights, and a candy cane border, mostly borrowed from <a href=\"https:\/\/codepen.io\/alvaromontoro\/pen\/xxXrzqj\">CodePen<\/a>. Just because we use AI doesn&#8217;t mean we can&#8217;t continue to make interesting interfaces! And AI can help you do that, too.<\/p>\n\n\n\n<p>After those fun things are complete, you can start making sure that you&#8217;re set up to use Cloudinary&#8217;s image upload and image transformation capabilities. To make this work, you need to ensure that you have some environment variables set up. Create an account on <a href=\"https:\/\/cloudinary.com\/\">Cloudinary<\/a> (there&#8217;s a generous free tier) and grab your API keys from the console by clicking the gear icon in the left nav and selecting <strong>API Keys<\/strong>:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1765398484\/blog-Build_Holiday_Card_Collages_With_1_Line_of_Code-3.png\" alt=\"API Keys under the gear icon in your Cloudinary console.\"\/><\/figure><\/div>\n\n\n<p>You want to add those keys to your .env file locally, and then make sure they&#8217;re available on your hosting service when you push your app to the cloud. I use Netlify so I add these keys into the Netlify console before publishing.<\/p>\n\n\n<pre class=\"wp-block-code\" 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\">PUBLIC_CLOUDINARY_CLOUD_NAME=<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">your<\/span> <span class=\"hljs-attr\">cloud<\/span> <span class=\"hljs-attr\">name<\/span>&gt;<\/span>\n\nPUBLIC_CLOUDINARY_UPLOAD_PRESET=christmas-collage<\/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\n\n<p>This app also needs what&#8217;s called an Upload Preset, which is essentially a placeholder that helps your app figure out where your uploaded images should go.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set up that preset by clicking the <strong>Uploads<\/strong> navigation link that&#8217;s right under the <strong>API Keys<\/strong> navigation on the left. This will let you set up an unsigned preset.<\/li>\n\n\n\n<li>Call it \u201cchristmas-collage\u201d (or something else, and make sure to update your app).<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1765398484\/blog-Build_Holiday_Card_Collages_With_1_Line_of_Code-4.png\" alt=\"Upload Preset called christmas-collage\"\/><\/figure><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Make sure you have a folder set up by clicking <strong>Assets<\/strong> > <strong>Folders<\/strong> on the left nav in the Cloudinary console. Call this folder \u201ccollages\u201d.<\/li>\n\n\n\n<li>Also create a folder called \u201choliday-assets\u201d and add a collage background image and a background image for your ribbon element on the card. I used a white pixel image and a fancy holiday background like this:<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1765398484\/blog-Build_Holiday_Card_Collages_With_1_Line_of_Code-5.jpg\" alt=\"The background contains various items (candy canes, wrapped presents, dried orange slices, pinecones, and Christmas lights) on a wood floor.\"\/><figcaption class=\"wp-element-caption\">Photo by <a href=\"https:\/\/unsplash.com\/@jeshoots?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">JESHOOTS.COM<\/a> on <a href=\"https:\/\/unsplash.com\/photos\/assorted-christmas-ornaments-7VOyZ0-iO0o?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Unsplash<\/a><\/figcaption><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">Watch the URL Builder Work<\/h2>\n\n\n\n<p>Now here&#8217;s the interesting bit. Once you&#8217;re done messing with your interface to make it look cute, take a look at the very clever way that your card is generated. First, you upload a series of five photos of your family to the app, and the interface lets you rearrange them into the order in the card that you want.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1765398485\/blog-Build_Holiday_Card_Collages_With_1_Line_of_Code-6.png\" alt=\"Generated holiday card with the five photos displayed in a collage format. The title of the card is displayed at the bottom: Our Family - Holiday 2025.\"\/><\/figure>\n\n\n\n<p>True story, my daughter asked me what the difference is between this and PicCollage, the answer being, &#8220;Mom made it!&#8221;<\/p>\n\n\n\n<p>The URL that is generated, packed with Cloudinary image transformations, looks something like this:<\/p>\n\n\n<pre class=\"wp-block-code\" 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\/jen-demos\/image\/upload\/w_1600,h_900,c_fill,q_auto,f_auto\/l_holiday-assets:jhi9cpio4ahxomhagwvs\/c_fill,w_473,h_680\/r_25,bo_8px_solid_rgb:FFD700\/fl_layer_apply,g_north_west,x_50,y_50\/l_holiday-assets:d9njoekpa1zzzepy2y5d\/c_fill,w_473,h_426\/r_25,bo_8px_solid_rgb:FFD700\/fl_layer_apply,g_north_west,x_563,y_50\/l_holiday-assets:nm9i3sjh6c3mkfj0ari1\/c_fill,w_473,h_214\/r_25,bo_8px_solid_rgb:FFD700\/fl_layer_apply,g_north_west,x_563,y_516\/l_holiday-assets:rg0c1ul7ux1gcgl8c2lr\/c_fill,w_473,h_214\/r_25,bo_8px_solid_rgb:FFD700\/fl_layer_apply,g_north_west,x_1076,y_50\/l_holiday-assets:d0brmcfuqfyzwtelsiyt\/c_fill,w_473,h_426\/r_25,bo_8px_solid_rgb:FFD700\/fl_layer_apply,g_north_west,x_1076,y_304\/l_holiday-assets:white-pixel\/c_fill,w_1600,h_100\/o_70\/fl_layer_apply,g_south,y_20\/l_text:Pacifico_70:Our%20Family%20-%20Holiday%202025,co_rgb:000000\/fl_layer_apply,g_center,y_380\/holiday-assets\/collage-bg<\/span><\/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\n\n<p>Yes, that one line created this card:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1765398486\/blog-Build_Holiday_Card_Collages_With_1_Line_of_Code-7.png\" alt=\"Generated holiday card with the five photos displayed in a collage format. The title of the card is displayed at the bottom: Our Family - Holiday 2025.\"\/><\/figure>\n\n\n\n<p>Let&#8217;s break down that one-liner.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Set up the base \u201ccard\u201d background:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs shcb-wrap-lines\">...\/image\/upload\/w_1600,h_900,c_fill,q_auto,f_auto\/ ... \/holiday-assets\/collage-bg<\/code><\/span><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>w_1600,h_900<\/code><\/strong>. Make the final image 1600\u00d7900.<\/li>\n\n\n\n<li><strong><code>c_fill<\/code><\/strong>. Crop\/resize to fill that aspect ratio.<\/li>\n\n\n\n<li><strong><code>q_auto,f_auto<\/code><\/strong>. Optimize quality and format automatically (WebP\/AVIF\/etc).<\/li>\n\n\n\n<li><strong><code>holiday-assets\/collage-bg<\/code><\/strong>. This is the base background image for the card.<br><\/li>\n<\/ul>\n\n\n\n<p>2. Add the first photo (top left):<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs shcb-wrap-lines\">\/l_holiday-assets:uzfzkx8d5xd0jr1jxzyo\/c_fill,w_473,h_680\n\n\/r_25,bo_8px_solid_rgb:FFD700\/fl_layer_apply,g_north_west,x_50,y_50<\/code><\/span><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>l_holiday-assets:...<\/strong><\/code>. Load this image as a layer.<\/li>\n\n\n\n<li><strong><code>C_fill,w_473,h_680<\/code><\/strong>. Size it to 473\u00d7680, cropping to fill.<\/li>\n\n\n\n<li><strong><code>R_25<\/code><\/strong>. Rounded corners (radius 25).<\/li>\n\n\n\n<li><strong><code>bo_8px_solid_rgb:FFD700<\/code><\/strong>. 8px solid gold (#FFD700) border.<\/li>\n\n\n\n<li><strong><code>Fl_layer_apply,g_north_west,x_50,y_50<\/code><\/strong>. Apply the layer at the top-left, offset 50px from the top and left.<\/li>\n<\/ul>\n\n\n\n<p>Add the remaining images, some taller than others and placed in different areas of the card.<\/p>\n\n\n\n<p>3. Add a semi-transparent footer bar:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs shcb-wrap-lines\">\/l_holiday-assets:white-pixel\/c_fill,w_1600,h_100\/o_70\n\n\/fl_layer_apply,g_south,y_20<\/code><\/span><\/pre>\n\n\n<p>This bar uses a white-pixel asset as a tiny base and stretches it to <code>w_1600,h_100<\/code> to form a strip which is <code>o_70<\/code> \u2013 70% opacity (semi-transparent). It&#8217;s then applied at the bottom (<code>g_south<\/code>) with a small vertical offset (<code>y_20<\/code>).<\/p>\n\n\n\n<p>4. Finally, add the holiday greeting text:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs shcb-wrap-lines\">\/l_text:Pacifico_70:Our%20Family%20-%20Holiday%202025,co_rgb:000000\n\n\/fl_layer_apply,g_center,y_380<\/code><\/span><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>l_text:Pacifico_70:...<\/code><\/strong> . Create a text layer with Font: Pacifico in size: 70. Give it the text: Our Family &#8211; Holiday 2025 with <code>co_rgb:000000<\/code>. Black text color.<\/li>\n\n\n\n<li><strong><code>Fl_layer_apply,g_center,y_380<\/code><\/strong>. Center the text horizontally and shift it vertically to overlay the footer.<\/li>\n<\/ul>\n\n\n\n<p>In short, this monster URL:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Starts with a festive background.<\/li>\n\n\n\n<li>Lays out five photos in a collage with rounded corners and gold frames.<\/li>\n\n\n\n<li>Adds a semi-transparent white bar at the bottom.<\/li>\n\n\n\n<li>Writes \u201cOur Family &#8211; Holiday 2025\u201d in a script font on top of that bar.<\/li>\n<\/ul>\n\n\n\n<p>It renders the whole card on demand in a single Cloudinary transformation URL. Really nice!<\/p>\n\n\n<div class='c-callout  c-callout--inline-title c-callout--tip'><strong class='c-callout__title'>Tip:<\/strong> <p>You can make edits right in the URL to change elements on the card. Try adding your own family name and changing the border color.<\/p>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Enjoy the Results<\/h2>\n\n\n\n<p>You could save this image and print it for snail mail, or send it right away via email to the folks who are eager to hear from you this holiday season. And you did it in one line. That&#8217;s awesome!<\/p>\n\n\n\n<p>Try this in <a href=\"https:\/\/cloudinary.com\/\">Cloudinary<\/a> today, and get one more item checked off your holiday to-do list. Learn more about image transformations <a href=\"https:\/\/cloudinary.com\/documentation\/image_transformations\">here<\/a>.<\/p>\n\n\n\n<p>Happy holidays from Cloudinary Developer Relations to you.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article, I&#8217;m not going to show you much code. Instead, I&#8217;m going to show you how you can build a holiday card collage, complete with a ribbon footer with text, a background, and 5 styled photos with rounded, colored borders in one line using the magic of Cloudinary&#8217;s image transformations. This is way [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":39647,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[370,165],"class_list":["post-39583","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-image","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>Build Holiday Card Collages With One Line of Code<\/title>\n<meta name=\"description\" content=\"In this article, I&#039;m not going to show you much code. Instead, I&#039;m going to show you how you can build a holiday card collage, complete with a ribbon\" \/>\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\/build-holiday-card-collages\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Build Holiday Card Collages With One Line of Code\" \/>\n<meta property=\"og:description\" content=\"In this article, I&#039;m not going to show you much code. Instead, I&#039;m going to show you how you can build a holiday card collage, complete with a ribbon\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-16T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-16T22:26:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1765923734\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code.jpg?_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\/jpeg\" \/>\n<meta name=\"author\" content=\"melindapham\" \/>\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\/build-holiday-card-collages#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages\"},\"author\":{\"name\":\"melindapham\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\"},\"headline\":\"Build Holiday Card Collages With One Line of Code\",\"datePublished\":\"2025-12-16T15:00:00+00:00\",\"dateModified\":\"2025-12-16T22:26:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages\"},\"wordCount\":1049,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1765923734\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code.jpg?_i=AA\",\"keywords\":[\"Image\",\"Image Transformation\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages\",\"url\":\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages\",\"name\":\"Build Holiday Card Collages With One Line of Code\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1765923734\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code.jpg?_i=AA\",\"datePublished\":\"2025-12-16T15:00:00+00:00\",\"dateModified\":\"2025-12-16T22:26:40+00:00\",\"description\":\"In this article, I'm not going to show you much code. Instead, I'm going to show you how you can build a holiday card collage, complete with a ribbon\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1765923734\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1765923734\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code.jpg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Build Holiday Card Collages With One Line of Code\"}]},{\"@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\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\",\"name\":\"melindapham\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"caption\":\"melindapham\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Build Holiday Card Collages With One Line of Code","description":"In this article, I'm not going to show you much code. Instead, I'm going to show you how you can build a holiday card collage, complete with a ribbon","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\/build-holiday-card-collages","og_locale":"en_US","og_type":"article","og_title":"Build Holiday Card Collages With One Line of Code","og_description":"In this article, I'm not going to show you much code. Instead, I'm going to show you how you can build a holiday card collage, complete with a ribbon","og_url":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages","og_site_name":"Cloudinary Blog","article_published_time":"2025-12-16T15:00:00+00:00","article_modified_time":"2025-12-16T22:26:40+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1765923734\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code.jpg?_i=AA","type":"image\/jpeg"}],"author":"melindapham","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages"},"author":{"name":"melindapham","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9"},"headline":"Build Holiday Card Collages With One Line of Code","datePublished":"2025-12-16T15:00:00+00:00","dateModified":"2025-12-16T22:26:40+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages"},"wordCount":1049,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1765923734\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code.jpg?_i=AA","keywords":["Image","Image Transformation"],"inLanguage":"en-US","copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages","url":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages","name":"Build Holiday Card Collages With One Line of Code","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1765923734\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code.jpg?_i=AA","datePublished":"2025-12-16T15:00:00+00:00","dateModified":"2025-12-16T22:26:40+00:00","description":"In this article, I'm not going to show you much code. Instead, I'm going to show you how you can build a holiday card collage, complete with a ribbon","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/build-holiday-card-collages"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1765923734\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1765923734\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code.jpg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/build-holiday-card-collages#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Build Holiday Card Collages With One Line of Code"}]},{"@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":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9","name":"melindapham","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","caption":"melindapham"}}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1765923734\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code\/Blog_Build_Holiday_Card_Collages_with_One_Line_of_Code.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/39583","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\/87"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=39583"}],"version-history":[{"count":2,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/39583\/revisions"}],"predecessor-version":[{"id":39592,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/39583\/revisions\/39592"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/39647"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=39583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=39583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=39583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}