{"id":35505,"date":"2024-09-05T07:00:00","date_gmt":"2024-09-05T14:00:00","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=35505"},"modified":"2024-09-05T16:13:34","modified_gmt":"2024-09-05T23:13:34","slug":"generative-recolor-e-commerce-paint-store-next-js","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js","title":{"rendered":"Add Generative Recolor to Your E-commerce Paint Store in Next.js"},"content":{"rendered":"\n<p>Creating color variants for products on an e-commerce site can be expensive and time-consuming, especially if it involves reshoots. With Cloudinary&#8217;s generative AI tool, Generative Recolor, you can target items based on the given prompts and apply the specified colors to them. This makes it easy to retouch images quickly, removing the manual and tedious approach to updating the colors of your product images.<\/p>\n\n\n\n<p>In this blog post, you\u2019ll build a simple e-commerce store using Next.js and use Cloudinary\u2019s <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/ai_in_action#generative_recolor\" rel=\"noreferrer noopener\">Generative Recolor feature<\/a>.<\/p>\n\n\n\n<p>To follow along, you need a basic understanding of TypeScript or JavaScript and a <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/users\/register_free\" rel=\"noreferrer noopener\">free <\/a><a target=\"_blank\" href=\"https:\/\/cloudinary.com\/users\/register_free\" rel=\"noreferrer noopener\">Cloudinary account<\/a>. The completed app is in this <a target=\"_blank\" href=\"https:\/\/github.com\/folucode\/cloudinary-generative-recolor-app\" rel=\"noreferrer noopener\">GitHub Repository<\/a>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Set Up the Next.js App<\/h1>\n\n\n\n<p>To start building this project, you\u2019ll first need to clone the starter project using the command below:<\/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\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">code<\/span>&gt;<\/span>$ git clone https:\/\/github.com\/folucode\/cloudinary-generative-recolor-app-starter.git<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">code<\/span>&gt;<\/span><\/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 project contains all the building blocks you need so that you can focus on the Generative Recolor feature.<\/p>\n\n\n\n<p>Next, install the Cloudinary SDK, where you\u2019ll get the components and functions you need to use the Generative Recolor feature in your app:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs shcb-wrap-lines\">$ npm install @cloudinary\/url-gen<\/code><\/span><\/pre>\n\n\n<figure class=\"wp-block-image size-large\"><img width=\"1024\" height=\"579\" data-public-id=\"Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1.png\" decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/w_1024,h_579,c_scale\/f_auto,q_auto\/v1725577390\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1.png?_i=AA\" alt=\"\" class=\"wp-post-35505 wp-image-35506\" loading=\"lazy\" data-format=\"png\" data-transformations=\"f_auto,q_auto\" data-version=\"1725577390\" data-seo=\"1\" srcset=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577390\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1.png?_i=AA 1600w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577390\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1.png?_i=AA 300w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577390\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1.png?_i=AA 768w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577390\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1.png?_i=AA 1024w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577390\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Next.js-1.png?_i=AA 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Implement the Generative Recolor Feature<\/h1>\n\n\n\n<p>Before you proceed, you need to upload an image to your Cloudinary account so you can test the Recolor feature. Check here to learn how to <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/blog\/guest_post\/upload-images-to-cloudinary-with-node-js-and-react\" rel=\"noreferrer noopener\">upload an image to Cloudinary<\/a>.<\/p>\n\n\n\n<p>After that, you want to set up the display for the image and the input field. The input field will take prompts that tell Cloudinary where to apply the color. Paste the following code in the <code>page.tsx<\/code> file in the try-out folder:<\/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\">\n<span class=\"hljs-comment\">\/\/ src\/app\/try-out\/page.tsx<\/span>\n\n<span class=\"hljs-string\">'use client'<\/span>;\n\n<span class=\"hljs-keyword\">import<\/span> { CSSProperties, FormEvent, useState } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'react'<\/span>;\n<span class=\"hljs-keyword\">import<\/span> styles <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'..\/page.module.css'<\/span>;\n<span class=\"hljs-keyword\">import<\/span> { useSearchParams } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'next\/navigation'<\/span>;\n\n<span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-keyword\">default<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">TryOut<\/span>(<span class=\"hljs-params\"><\/span>) <\/span>{\n  <span class=\"hljs-keyword\">const<\/span> searchParams = useSearchParams();\n\n  <span class=\"hljs-keyword\">const<\/span> &#91;imageUrl, setImageUrl] = useState(<span class=\"hljs-string\">'LINK_TO_IMAGE_ON_CLOUDINARY'<\/span>);\n  <span class=\"hljs-keyword\">const<\/span> &#91;prompts, setPrompts] = useState(<span class=\"hljs-string\">''<\/span>);\n\n  <span class=\"hljs-keyword\">const<\/span> imageRelativePath: string = <span class=\"hljs-string\">'IMAGE_RELATIVE_PATH_ON_CLOUDINARY'<\/span>;\n  <span class=\"hljs-keyword\">const<\/span> color: string = searchParams.get(<span class=\"hljs-string\">'color'<\/span>) || <span class=\"hljs-string\">''<\/span>;\n\n  <span class=\"hljs-keyword\">const<\/span> colorStyle: CSSProperties = {\n    <span class=\"hljs-attr\">color<\/span>: color || <span class=\"hljs-string\">'initial'<\/span>,\n    <span class=\"hljs-attr\">textDecoration<\/span>: <span class=\"hljs-string\">'underline'<\/span>,\n  };\n\n  <span class=\"hljs-keyword\">async<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">recolor<\/span>(<span class=\"hljs-params\">e: FormEvent<\/span>) <\/span>{\n    e.preventDefault();\n  }\n\n  <span class=\"hljs-keyword\">return<\/span> (\n    <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">main<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">{styles.main}<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h1<\/span>&gt;<\/span>\n        Try Out{' '}\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">style<\/span>=<span class=\"hljs-string\">{colorStyle}<\/span>&gt;<\/span>\n          {color?.replace(color.charAt(0), color.charAt(0).toUpperCase())}\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span>{' '}\n        Paint\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">h1<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">{styles&#91;<\/span>'<span class=\"hljs-attr\">try-out-image<\/span>']}&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">img<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">{styles.img}<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">{imageUrl}<\/span> <span class=\"hljs-attr\">alt<\/span>=<span class=\"hljs-string\">'living area'<\/span> \/&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">{styles&#91;<\/span>'<span class=\"hljs-attr\">try-out-area<\/span>']}&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span>&gt;<\/span>\n          You can add multiple items, separated by comma (`,`). e.g. 'left wall,\n          right wall, window'\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">{styles&#91;<\/span>'<span class=\"hljs-attr\">try-out-input<\/span>']}&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span>&gt;<\/span>Item(s) to paint: <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">input<\/span>\n            <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">'text'<\/span>\n            <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">{prompts}<\/span>\n            <span class=\"hljs-attr\">onChange<\/span>=<span class=\"hljs-string\">{(e)<\/span> =&gt;<\/span> setPrompts(e.target.value)}\n          \/&gt;\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">button<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">{styles.button}<\/span> <span class=\"hljs-attr\">onClick<\/span>=<span class=\"hljs-string\">{recolor}<\/span>&gt;<\/span>\n            Try It!\n          <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">button<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">main<\/span>&gt;<\/span><\/span>\n  );\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\n\n<p>In the code above, you defined a React component named <code>TryOut<\/code>. The use client directive at the top indicates that this component is a client component. Additionally, the <code>useSearchParams<\/code> from Next.js handles the URL query parameters.<\/p>\n\n\n\n<p>Within the component, the <code>useState<\/code> hook manages the state variables: <code>imageUrl<\/code>, which initially holds a link to an image on Cloudinary, and prompts, which store user input. The searchParams object extracts the &#8216;color&#8217; parameter from the URL query string; this is the color you\u2019ll use to paint the image.<\/p>\n\n\n\n<p>The <code>LINK_TO_IMAGE_ON_CLOUDINARY<\/code> is the full path to the image on Cloudinary \u2013 here is <a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/docs\/white-sofa.jpg\" target=\"_blank\" rel=\"noreferrer noopener\">an example<\/a>. The <code>IMAGE_RELATIVE_PATH_ON_CLOUDINARY<\/code> is the image location on your Cloudinary account. For the earlier example image, it will be <code>\/docs\/white-sofa.jpg<\/code>.<\/p>\n\n\n\n<p>Finally, a <code>colorStyle<\/code> object sets the text color to the value of the <code>color<\/code> query parameter, if it exists, or to <code>initial<\/code> otherwise. It also underlines the text. The recolor function handles the functionality to recolor the image.<\/p>\n\n\n\n<p>You can navigate to this page by clicking any of the paint options on the home page:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img width=\"1024\" height=\"584\" data-public-id=\"Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1.png\" decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/w_1024,h_584,c_scale\/f_auto,q_auto\/v1725577386\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1.png?_i=AA\" alt=\"\" class=\"wp-post-35505 wp-image-35508\" loading=\"lazy\" data-format=\"png\" data-transformations=\"f_auto,q_auto\" data-version=\"1725577386\" data-seo=\"1\" srcset=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577386\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1.png?_i=AA 1600w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577386\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1.png?_i=AA 300w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577386\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1.png?_i=AA 768w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577386\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1.png?_i=AA 1024w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577386\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-2-1.png?_i=AA 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Build the Recolor Logic<\/h2>\n\n\n\n<p>Now that you have finished the setup, to build the Recolor logic, your app will need to call the Cloudinary API to apply your specified color to the individual parts of the image indicated in the prompt. First, import the necessary Cloudinary modules and create a new Cloudinary instance configured with your cloud name.&nbsp;<\/p>\n\n\n\n<p>Then, navigate to the <a href=\"https:\/\/console.cloudinary.com\/pm\/c-44312a85dae383cdb3fedab809bc64\/developer-dashboard\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary developer dashboard<\/a> to get your cloud name. You should see it under the <strong>Product Environment Credentials <\/strong>section.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img width=\"1024\" height=\"207\" data-public-id=\"Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266.png\" decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/w_1024,h_207,c_scale\/f_auto,q_auto\/v1725577382\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266.png?_i=AA\" alt=\"\" class=\"wp-post-35505 wp-image-35509\" loading=\"lazy\" data-format=\"png\" data-transformations=\"f_auto,q_auto\" data-version=\"1725577382\" data-seo=\"1\" srcset=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577382\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266.png?_i=AA 1600w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577382\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266.png?_i=AA 300w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577382\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266.png?_i=AA 768w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577382\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266.png?_i=AA 1024w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577382\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-3_3550972266.png?_i=AA 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Next, paste the code below at the top of the page.tsx file in the try-out folder. This will import the components needed to use the Generative Recolor feature and it also creates an instance of Cloudinary with your cloud name:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">\n<span class=\"hljs-comment\">\/\/ src\/app\/try-out\/page.tsx<\/span>\n\n...\n\nimport { generativeRecolor } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'@cloudinary\/url-gen\/actions\/effect'<\/span>;\n<span class=\"hljs-keyword\">import<\/span> { CloudinaryImage, Cloudinary } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'@cloudinary\/url-gen'<\/span>;\n\n<span class=\"hljs-keyword\">const<\/span> cloudinary = <span class=\"hljs-keyword\">new<\/span> Cloudinary({\n  <span class=\"hljs-attr\">cloud<\/span>: {\n    <span class=\"hljs-attr\">cloudName<\/span>: <span class=\"hljs-string\">'&#91;your-cloudinary-cloud-name]'<\/span>,\n  },\n});\n\n<span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-keyword\">default<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">TryOut<\/span>(<span class=\"hljs-params\"><\/span>) <\/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\">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>After this, in the Recolor function you defined earlier, you\u2019ll send your image to Cloudinary and apply the color to the parts of the image specified in the prompt, using the code snippet below:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">\n<span class=\"hljs-comment\">\/\/ src\/app\/try-out\/page.tsx<\/span>\n\n...\n\n async <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">recolor<\/span>(<span class=\"hljs-params\">e: FormEvent<\/span>) <\/span>{\n    e.preventDefault();\n\n    <span class=\"hljs-keyword\">if<\/span> (!prompts) <span class=\"hljs-keyword\">return<\/span>;\n\n    <span class=\"hljs-keyword\">const<\/span> img: CloudinaryImage = cloudinary\n      .image(imageRelativePath)\n      .effect(generativeRecolor(prompts.split(<span class=\"hljs-string\">','<\/span>), color));\n\n    setImageUrl(img.toURL());\n    setPrompts(<span class=\"hljs-string\">''<\/span>)\n  }\n\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\n\n<p>In the code above, when the form is submitted, the function&#8217;s first action is to call <code>e.preventDefault()<\/code>. This prevents the form&#8217;s default behavior, which will generally cause the page to reload.<\/p>\n\n\n\n<p>Next, the function checks if the prompts state is empty. If empty, the function returns early, effectively doing nothing further. If the prompts aren\u2019t empty, the function proceeds to generate a new <code>CloudinaryImage<\/code> object using the <code>Cloudinary.image()<\/code> method, which takes the <code>imageRelativePath<\/code> as an argument. The <code>method.effect()<\/code> is then chained to apply the Generative Recoloring effect to the image. The <code>generativeRecolor<\/code> function, which defines this effect, takes two arguments: the prompts split into an array by commas and the color. The image is recolored based on the user&#8217;s input and the specified color.<\/p>\n\n\n\n<p>After the image with the applied effect is generated, the function converts this image to a URL using the <code>img.toURL()<\/code> method. This URL is then set to the <code>imageUrl<\/code> state using the <code>setImageUrl<\/code> function, which updates the image displayed in the component with the newly recolored version.\u00a0<\/p>\n\n\n\n<p>In the image below, the prompt specifies applying the green paint on the left wall, right wall, and the wall at the back. Cloudinary finds and recognizes these parts of the image and applies the color to them:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img width=\"1024\" height=\"575\" data-public-id=\"Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d.png\" decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/w_1024,h_575,c_scale\/f_auto,q_auto\/v1725577378\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d.png?_i=AA\" alt=\"\" class=\"wp-post-35505 wp-image-35510\" loading=\"lazy\" data-format=\"png\" data-transformations=\"f_auto,q_auto\" data-version=\"1725577378\" data-seo=\"1\" srcset=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577378\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d.png?_i=AA 1600w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577378\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d.png?_i=AA 300w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577378\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d.png?_i=AA 768w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577378\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d.png?_i=AA 1024w, https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577378\/Web_Assets\/blog\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d\/blog-Add-Generative-Recolor-to-Your-E-commerce-Paint-Store-in-Nextjs-4_355100356d.png?_i=AA 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">The Final Result<\/h2>\n\n\n\n<p>This demo used different paint colors in various parts of the living area. It shows how you can specify an item or area to apply the color to and <a href=\"http:\/\/The Final Result  This demo used different paint colors in various parts of the living area. It shows how you can specify an item or area to apply the color to and see the result.\">see the result<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p>In this blog post, you learned how to use Cloudinary&#8217;s Generative Recolor tool to test paint colors on images of a living area or any space. Try extending this app by adding more features, like allowing users to upload their images and utilizing a loader to show the new image is being generated. To learn more about Cloudinary\u2019s suite of AI features, <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/\" rel=\"noreferrer noopener\">contact us today<\/a>.<\/p>\n\n\n\n<p>If you found this blog post helpful and want to discuss it more, join the <a target=\"_blank\" href=\"https:\/\/community.cloudinary.com\/\" rel=\"noreferrer noopener\"><u>Cloudinary Community forum<\/u><\/a> and its associated <a target=\"_blank\" href=\"https:\/\/discord.com\/invite\/cloudinary\" rel=\"noreferrer noopener\"><u>Discord<\/u><\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resources<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/cloudinary.com\/documentation\/ai_in_action#generative_recolor\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary Generative Recolor Documentation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudinary.com\/documentation\/programmable_media_overview\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary Overall Media Documentation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/nextjs.org\/docs\" target=\"_blank\" rel=\"noreferrer noopener\">Next.js Documentation<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Creating color variants for products on an e-commerce site can be expensive and time-consuming, especially if it involves reshoots. With Cloudinary&#8217;s generative AI tool, Generative Recolor, you can target items based on the given prompts and apply the specified colors to them. This makes it easy to retouch images quickly, removing the manual and tedious [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":35513,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[409,212],"class_list":["post-35505","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-generative-ai","tag-next-js"],"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>Add Generative Recolor to Your E-commerce Paint Store in Next.js<\/title>\n<meta name=\"description\" content=\"Learn to add Generative Recolor to your Next.js e-commerce paint store. Virtually test paint colors on furniture and walls.\" \/>\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\/generative-recolor-e-commerce-paint-store-next-js\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Add Generative Recolor to Your E-commerce Paint Store in Next.js\" \/>\n<meta property=\"og:description\" content=\"Learn to add Generative Recolor to your Next.js e-commerce paint store. Virtually test paint colors on furniture and walls.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-05T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-05T23:13:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1725577646\/Web_Assets\/blog\/paint_store_gen_recolor-blog_355139fbbd\/paint_store_gen_recolor-blog_355139fbbd-jpeg?_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\/generative-recolor-e-commerce-paint-store-next-js#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js\"},\"author\":{\"name\":\"melindapham\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\"},\"headline\":\"Add Generative Recolor to Your E-commerce Paint Store in Next.js\",\"datePublished\":\"2024-09-05T14:00:00+00:00\",\"dateModified\":\"2024-09-05T23:13:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js\"},\"wordCount\":931,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577646\/Web_Assets\/blog\/paint_store_gen_recolor-blog_355139fbbd\/paint_store_gen_recolor-blog_355139fbbd.jpeg?_i=AA\",\"keywords\":[\"Generative AI\",\"Next.js\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2024\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js\",\"url\":\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js\",\"name\":\"Add Generative Recolor to Your E-commerce Paint Store in Next.js\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577646\/Web_Assets\/blog\/paint_store_gen_recolor-blog_355139fbbd\/paint_store_gen_recolor-blog_355139fbbd.jpeg?_i=AA\",\"datePublished\":\"2024-09-05T14:00:00+00:00\",\"dateModified\":\"2024-09-05T23:13:34+00:00\",\"description\":\"Learn to add Generative Recolor to your Next.js e-commerce paint store. Virtually test paint colors on furniture and walls.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577646\/Web_Assets\/blog\/paint_store_gen_recolor-blog_355139fbbd\/paint_store_gen_recolor-blog_355139fbbd.jpeg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577646\/Web_Assets\/blog\/paint_store_gen_recolor-blog_355139fbbd\/paint_store_gen_recolor-blog_355139fbbd.jpeg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Add Generative Recolor to Your E-commerce Paint Store in Next.js\"}]},{\"@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":"Add Generative Recolor to Your E-commerce Paint Store in Next.js","description":"Learn to add Generative Recolor to your Next.js e-commerce paint store. Virtually test paint colors on furniture and walls.","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\/generative-recolor-e-commerce-paint-store-next-js","og_locale":"en_US","og_type":"article","og_title":"Add Generative Recolor to Your E-commerce Paint Store in Next.js","og_description":"Learn to add Generative Recolor to your Next.js e-commerce paint store. Virtually test paint colors on furniture and walls.","og_url":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js","og_site_name":"Cloudinary Blog","article_published_time":"2024-09-05T14:00:00+00:00","article_modified_time":"2024-09-05T23:13:34+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1725577646\/Web_Assets\/blog\/paint_store_gen_recolor-blog_355139fbbd\/paint_store_gen_recolor-blog_355139fbbd-jpeg?_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\/generative-recolor-e-commerce-paint-store-next-js#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js"},"author":{"name":"melindapham","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9"},"headline":"Add Generative Recolor to Your E-commerce Paint Store in Next.js","datePublished":"2024-09-05T14:00:00+00:00","dateModified":"2024-09-05T23:13:34+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js"},"wordCount":931,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577646\/Web_Assets\/blog\/paint_store_gen_recolor-blog_355139fbbd\/paint_store_gen_recolor-blog_355139fbbd.jpeg?_i=AA","keywords":["Generative AI","Next.js"],"inLanguage":"en-US","copyrightYear":"2024","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js","url":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js","name":"Add Generative Recolor to Your E-commerce Paint Store in Next.js","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577646\/Web_Assets\/blog\/paint_store_gen_recolor-blog_355139fbbd\/paint_store_gen_recolor-blog_355139fbbd.jpeg?_i=AA","datePublished":"2024-09-05T14:00:00+00:00","dateModified":"2024-09-05T23:13:34+00:00","description":"Learn to add Generative Recolor to your Next.js e-commerce paint store. Virtually test paint colors on furniture and walls.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577646\/Web_Assets\/blog\/paint_store_gen_recolor-blog_355139fbbd\/paint_store_gen_recolor-blog_355139fbbd.jpeg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1725577646\/Web_Assets\/blog\/paint_store_gen_recolor-blog_355139fbbd\/paint_store_gen_recolor-blog_355139fbbd.jpeg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/generative-recolor-e-commerce-paint-store-next-js#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Add Generative Recolor to Your E-commerce Paint Store in Next.js"}]},{"@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\/v1725577646\/Web_Assets\/blog\/paint_store_gen_recolor-blog_355139fbbd\/paint_store_gen_recolor-blog_355139fbbd.jpeg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/35505","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=35505"}],"version-history":[{"count":3,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/35505\/revisions"}],"predecessor-version":[{"id":35514,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/35505\/revisions\/35514"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/35513"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=35505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=35505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=35505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}