{"id":31138,"date":"2023-09-14T07:00:00","date_gmt":"2023-09-14T14:00:00","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=31138"},"modified":"2024-10-23T17:34:09","modified_gmt":"2024-10-24T00:34:09","slug":"generative-ai-restores-imperfect-photos","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos","title":{"rendered":"Generative AI Restores Imperfect Photos to Perfection"},"content":{"rendered":"\n<p>Cloudinary continues to add Generative AI innovations to its Programmable Media product with its latest offering: Generative Restore. This new tool uses Generative AI to correct old and damaged images. Whether dealing with <a href=\"https:\/\/cloudinary.com\/documentation\/user_generated_content\">user-generated content<\/a>, vintage photographs, scanned images, or pictures damaged by over-compression, Generative Restore can bring what was once difficult to see into view.<\/p>\n\n\n\n<p>Try out Generative Restore and other cutting-edge features at our new <a href=\"http:\/\/ai.cloudinary.com\" target=\"_blank\" rel=\"noreferrer noopener\">Generative AI Playground<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How It Works<\/h2>\n\n\n\n<p>Generative restoration is a sophisticated process of scrutinizing images for imperfections like compression artifacts and scratches. Restoring a damaged image is a two-step process. First, generative AI&nbsp;utilizes a restoration model to recover the original image details that might have been lost during past processing. Next, a generative refinement model is applied to enhance the damaged areas thereby restoring the image. The removal of artificially introduced and original noise significantly improves image quality.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Does Generative Restore Remove\/Improve?<\/h2>\n\n\n\n<p>1<strong>. Severe compression artifacts.<\/strong> Generative Restore excels at eliminating the artifacts that plague heavily compressed images, eliminating the unsightly imperfections.<\/p>\n\n\n\n<p>2. <strong>Noise reduction. <\/strong>Grainy images can ruin the user experience of your sites. Generative Restore reduces noise, transforming grainy visuals into crisp, clear, more professional-looking images.<\/p>\n\n\n\n<p>3. <strong>Image sharpening.<\/strong> Generative Restore removes blurriness by sharpening fuzzy edges.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Usage<\/h2>\n\n\n\n<p>The Generative Restore feature is called via the <code>gen_restore<\/code> transformation command in our SDKS (or <code>e_gen_restore<\/code> in the URL API).&nbsp;<\/p>\n\n\n\n<p>Some examples and code to see it in action.<\/p>\n\n\n<div class=\"wp-block-cloudinary-markdown \"><script src=\"https:\/\/unpkg.com\/@cloudfour\/image-compare\/dist\/index.min.js\"><\/script>\n<style>.third {width: 100%; margin: auto; margin-top: 20px;}@media(max-width: 767px{.third{width: 100%;}})<\/style>\n<div class=\"third\">\n<image-compare style=\"--exposure: 50%;\">\n      <img decoding=\"async\" slot=\"image-1\" alt=\"blurry shirt and shoes\" src=\"https:\/\/res.cloudinary.com\/generative-ai-demos\/image\/upload\/f_auto\/q_auto\/v1\/website_assets\/samples\/restore\/restore_2.jpg\">\n      <img decoding=\"async\" slot=\"image-2\" alt=\"crisp shirt and shoes\" src=\"https:\/\/res.cloudinary.com\/generative-ai-demos\/image\/upload\/e_gen_restore\/f_auto\/q_auto\/v1\/website_assets\/samples\/restore\/restore_2.jpg\">\n<\/image-compare>\n<\/div>\n<\/div>\n\n<cld-code-widget\n      class=\"wp-block-cloudinary-transformation-widget c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;, {transformation: [ {effect: \\&quot;gen_restore\\&quot;}, {quality: \\&quot;auto\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;, {transformation: [\\n  {effect: \\&quot;gen_restore\\&quot;},\\n  {quality: \\&quot;auto\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot; &gt; &lt;Transformation effect=\\&quot;gen_restore\\&quot; \\\/&gt; &lt;Transformation quality=\\&quot;auto\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot; &gt;\\n\\t&lt;Transformation effect=\\&quot;gen_restore\\&quot; \\\/&gt;\\n\\t&lt;Transformation quality=\\&quot;auto\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot; &gt; &lt;cld-transformation effect=\\&quot;gen_restore\\&quot; \\\/&gt; &lt;cld-transformation quality=\\&quot;auto\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation effect=\\&quot;gen_restore\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation quality=\\&quot;auto\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot; &gt; &lt;cl-transformation effect=\\&quot;gen_restore\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation quality=\\&quot;auto\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation effect=\\&quot;gen_restore\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation quality=\\&quot;auto\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;website_assets\\\/samples\\\/restore\\\/restore_2.jpg&#039;, {transformation: [ {effect: \\&quot;gen_restore\\&quot;}, {quality: \\&quot;auto\\&quot;} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;website_assets\\\/samples\\\/restore\\\/restore_2.jpg&#039;, {transformation: [\\n  {effect: \\&quot;gen_restore\\&quot;},\\n  {quality: \\&quot;auto\\&quot;}\\n  ]}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;).image(transformation=[ {&#039;effect&#039;: \\&quot;gen_restore\\&quot;}, {&#039;quality&#039;: \\&quot;auto\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;).image(transformation=[\\n  {&#039;effect&#039;: \\&quot;gen_restore\\&quot;},\\n  {&#039;quality&#039;: \\&quot;auto\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;website_assets\\\/samples\\\/restore\\\/restore_2.jpg&#039;))\\n\\t-&gt;effect(Effect::generativeRestore())\\n\\t-&gt;delivery(Delivery::format(\\n\\tFormat::auto()))\\n\\t-&gt;delivery(Delivery::quality(\\n\\tQuality::auto()));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;website_assets\\\/samples\\\/restore\\\/restore_2.jpg&#039;))\\n\\t-&gt;effect(Effect::generativeRestore())\\n\\t-&gt;delivery(Delivery::format(\\n\\tFormat::auto()))\\n\\t-&gt;delivery(Delivery::quality(\\n\\tQuality::auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;effect\\&quot;=&gt;\\&quot;gen_restore\\&quot;), array(\\&quot;quality\\&quot;=&gt;\\&quot;auto\\&quot;) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;effect\\&quot;=&gt;\\&quot;gen_restore\\&quot;),\\n  array(\\&quot;quality\\&quot;=&gt;\\&quot;auto\\&quot;)\\n  )))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().effect(\\&quot;gen_restore\\&quot;).chain() .quality(\\&quot;auto\\&quot;)).imageTag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .effect(\\&quot;gen_restore\\&quot;).chain()\\n  .quality(\\&quot;auto\\&quot;)).imageTag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;, transformation: [ {effect: \\&quot;gen_restore\\&quot;}, {quality: \\&quot;auto\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;, transformation: [\\n  {effect: \\&quot;gen_restore\\&quot;},\\n  {quality: \\&quot;auto\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Effect(\\&quot;gen_restore\\&quot;).Chain() .Quality(\\&quot;auto\\&quot;)).BuildImageTag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Effect(\\&quot;gen_restore\\&quot;).Chain()\\n  .Quality(\\&quot;auto\\&quot;)).BuildImageTag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;website_assets\\\/samples\\\/restore\\\/restore_2.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.generativeRestore())\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;website_assets\\\/samples\\\/restore\\\/restore_2.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.generativeRestore())\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setEffect(\\&quot;gen_restore\\&quot;).chain() .setQuality(\\&quot;auto\\&quot;)).generate(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setEffect(\\&quot;gen_restore\\&quot;).chain()\\n  .setQuality(\\&quot;auto\\&quot;)).generate(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().effect(\\&quot;gen_restore\\&quot;).chain() .quality(\\&quot;auto\\&quot;)).generate(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .effect(\\&quot;gen_restore\\&quot;).chain()\\n  .quality(\\&quot;auto\\&quot;)).generate(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;website_assets\\\/samples\\\/restore\\\/restore_2.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.generativeRestore())\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;website_assets\\\/samples\\\/restore\\\/restore_2.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.generativeRestore())\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n\\t effect(Effect.generativeRestore())\\n\\t delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t delivery(Delivery.quality(\\n\\tQuality.auto())) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n\\t effect(Effect.generativeRestore())\\n\\t delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t delivery(Delivery.quality(\\n\\tQuality.auto())) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;, {transformation: [ {effect: \\&quot;gen_restore\\&quot;}, {quality: \\&quot;auto\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;, {transformation: [\\n  {effect: \\&quot;gen_restore\\&quot;},\\n  {quality: \\&quot;auto\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/generative-ai-demos\\\/image\\\/upload\\\/e_gen_restore\\\/f_auto\\\/q_auto\\\/v1\\\/website_assets\\\/samples\\\/restore\\\/restore_2.jpg&quot;,&quot;cloud_name&quot;:&quot;generative-ai-demos&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;effect&quot;:&quot;gen_restore&quot;},{&quot;format&quot;:&quot;auto&quot;},{&quot;quality&quot;:&quot;auto&quot;}],&quot;transformation_string&quot;:&quot;e_gen_restore\\\/f_auto\\\/q_auto&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:null,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;website_assets\\\/samples\\\/restore\\\/restore_2.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget>\n\n\n<p>You can combine Generative Restore with the <code>improve<\/code> (or <code>e_improve<\/code>) effect for impressive results. While Generative Restore tackles compression artifacts, the <code>improve<\/code> effect enhances color, contrast, and brightness.<\/p>\n\n\n<div class=\"wp-block-cloudinary-markdown \"><script src=\"https:\/\/unpkg.com\/@cloudfour\/image-compare\/dist\/index.min.js\"><\/script>\n<style>.third {width: 100%; margin: auto; margin-top: 20px;}@media(max-width: 767px{.third{width: 100%;}})<\/style>\n<div class=\"third\">\n<image-compare style=\"--exposure: 50%;\">\n      <img decoding=\"async\" slot=\"image-1\" alt=\"blurry selfie\" src=\"https:\/\/res.cloudinary.com\/generative-ai-demos\/image\/upload\/f_auto\/q_auto\/v1\/website_assets\/samples\/restore\/restore_3.jpg\">\n      <img decoding=\"async\" slot=\"image-2\" alt=\"crisp selfie\" src=\"https:\/\/res.cloudinary.com\/generative-ai-demos\/image\/upload\/e_gen_restore\/e_improve\/f_auto\/q_auto\/v1\/website_assets\/samples\/restore\/restore_3.jpg\">\n<\/image-compare>\n<\/div>\n<\/div>\n\n<cld-code-widget\n      class=\"wp-block-cloudinary-transformation-widget c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;, {transformation: [ {effect: \\&quot;gen_restore\\&quot;}, {effect: \\&quot;improve\\&quot;}, {quality: \\&quot;auto\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;, {transformation: [\\n  {effect: \\&quot;gen_restore\\&quot;},\\n  {effect: \\&quot;improve\\&quot;},\\n  {quality: \\&quot;auto\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .adjust(improve())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .adjust(improve())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot; &gt; &lt;Transformation effect=\\&quot;gen_restore\\&quot; \\\/&gt; &lt;Transformation effect=\\&quot;improve\\&quot; \\\/&gt; &lt;Transformation quality=\\&quot;auto\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot; &gt;\\n\\t&lt;Transformation effect=\\&quot;gen_restore\\&quot; \\\/&gt;\\n\\t&lt;Transformation effect=\\&quot;improve\\&quot; \\\/&gt;\\n\\t&lt;Transformation quality=\\&quot;auto\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .adjust(improve())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .adjust(improve())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot; &gt; &lt;cld-transformation effect=\\&quot;gen_restore\\&quot; \\\/&gt; &lt;cld-transformation effect=\\&quot;improve\\&quot; \\\/&gt; &lt;cld-transformation quality=\\&quot;auto\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation effect=\\&quot;gen_restore\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation effect=\\&quot;improve\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation quality=\\&quot;auto\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .adjust(improve())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .adjust(improve())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot; &gt; &lt;cl-transformation effect=\\&quot;gen_restore\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation effect=\\&quot;improve\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation quality=\\&quot;auto\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation effect=\\&quot;gen_restore\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation effect=\\&quot;improve\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation quality=\\&quot;auto\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .adjust(improve())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .adjust(improve())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;website_assets\\\/samples\\\/restore\\\/restore_3.jpg&#039;, {transformation: [ {effect: \\&quot;gen_restore\\&quot;}, {effect: \\&quot;improve\\&quot;}, {quality: \\&quot;auto\\&quot;} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;website_assets\\\/samples\\\/restore\\\/restore_3.jpg&#039;, {transformation: [\\n  {effect: \\&quot;gen_restore\\&quot;},\\n  {effect: \\&quot;improve\\&quot;},\\n  {quality: \\&quot;auto\\&quot;}\\n  ]}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;).image(transformation=[ {&#039;effect&#039;: \\&quot;gen_restore\\&quot;}, {&#039;effect&#039;: \\&quot;improve\\&quot;}, {&#039;quality&#039;: \\&quot;auto\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;).image(transformation=[\\n  {&#039;effect&#039;: \\&quot;gen_restore\\&quot;},\\n  {&#039;effect&#039;: \\&quot;improve\\&quot;},\\n  {&#039;quality&#039;: \\&quot;auto\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;website_assets\\\/samples\\\/restore\\\/restore_3.jpg&#039;))\\n\\t-&gt;effect(Effect::generativeRestore())\\n\\t-&gt;adjust(Adjust::improve())\\n\\t-&gt;delivery(Delivery::format(\\n\\tFormat::auto()))\\n\\t-&gt;delivery(Delivery::quality(\\n\\tQuality::auto()));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;website_assets\\\/samples\\\/restore\\\/restore_3.jpg&#039;))\\n\\t-&gt;effect(Effect::generativeRestore())\\n\\t-&gt;adjust(Adjust::improve())\\n\\t-&gt;delivery(Delivery::format(\\n\\tFormat::auto()))\\n\\t-&gt;delivery(Delivery::quality(\\n\\tQuality::auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;effect\\&quot;=&gt;\\&quot;gen_restore\\&quot;), array(\\&quot;effect\\&quot;=&gt;\\&quot;improve\\&quot;), array(\\&quot;quality\\&quot;=&gt;\\&quot;auto\\&quot;) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;effect\\&quot;=&gt;\\&quot;gen_restore\\&quot;),\\n  array(\\&quot;effect\\&quot;=&gt;\\&quot;improve\\&quot;),\\n  array(\\&quot;quality\\&quot;=&gt;\\&quot;auto\\&quot;)\\n  )))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().effect(\\&quot;gen_restore\\&quot;).chain() .effect(\\&quot;improve\\&quot;).chain() .quality(\\&quot;auto\\&quot;)).imageTag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .effect(\\&quot;gen_restore\\&quot;).chain()\\n  .effect(\\&quot;improve\\&quot;).chain()\\n  .quality(\\&quot;auto\\&quot;)).imageTag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;, transformation: [ {effect: \\&quot;gen_restore\\&quot;}, {effect: \\&quot;improve\\&quot;}, {quality: \\&quot;auto\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;, transformation: [\\n  {effect: \\&quot;gen_restore\\&quot;},\\n  {effect: \\&quot;improve\\&quot;},\\n  {quality: \\&quot;auto\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Effect(\\&quot;gen_restore\\&quot;).Chain() .Effect(\\&quot;improve\\&quot;).Chain() .Quality(\\&quot;auto\\&quot;)).BuildImageTag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Effect(\\&quot;gen_restore\\&quot;).Chain()\\n  .Effect(\\&quot;improve\\&quot;).Chain()\\n  .Quality(\\&quot;auto\\&quot;)).BuildImageTag(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;website_assets\\\/samples\\\/restore\\\/restore_3.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.generativeRestore())\\n\\t.adjust(Adjust.improve())\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;website_assets\\\/samples\\\/restore\\\/restore_3.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.generativeRestore())\\n\\t.adjust(Adjust.improve())\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setEffect(\\&quot;gen_restore\\&quot;).chain() .setEffect(\\&quot;improve\\&quot;).chain() .setQuality(\\&quot;auto\\&quot;)).generate(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setEffect(\\&quot;gen_restore\\&quot;).chain()\\n  .setEffect(\\&quot;improve\\&quot;).chain()\\n  .setQuality(\\&quot;auto\\&quot;)).generate(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().effect(\\&quot;gen_restore\\&quot;).chain() .effect(\\&quot;improve\\&quot;).chain() .quality(\\&quot;auto\\&quot;)).generate(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .effect(\\&quot;gen_restore\\&quot;).chain()\\n  .effect(\\&quot;improve\\&quot;).chain()\\n  .quality(\\&quot;auto\\&quot;)).generate(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;website_assets\\\/samples\\\/restore\\\/restore_3.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.generativeRestore())\\n\\t.adjust(Adjust.improve())\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;website_assets\\\/samples\\\/restore\\\/restore_3.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.generativeRestore())\\n\\t.adjust(Adjust.improve())\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n\\t effect(Effect.generativeRestore())\\n\\t adjust(Adjust.improve())\\n\\t delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t delivery(Delivery.quality(\\n\\tQuality.auto())) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n\\t effect(Effect.generativeRestore())\\n\\t adjust(Adjust.improve())\\n\\t delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t delivery(Delivery.quality(\\n\\tQuality.auto())) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;, {transformation: [ {effect: \\&quot;gen_restore\\&quot;}, {effect: \\&quot;improve\\&quot;}, {quality: \\&quot;auto\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;, {transformation: [\\n  {effect: \\&quot;gen_restore\\&quot;},\\n  {effect: \\&quot;improve\\&quot;},\\n  {quality: \\&quot;auto\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .adjust(improve())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg\\&quot;)\\n  .effect(generativeRestore())\\n  .adjust(improve())\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/generative-ai-demos\\\/image\\\/upload\\\/e_gen_restore\\\/e_improve\\\/f_auto\\\/q_auto\\\/v1\\\/website_assets\\\/samples\\\/restore\\\/restore_3.jpg&quot;,&quot;cloud_name&quot;:&quot;generative-ai-demos&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;effect&quot;:&quot;gen_restore&quot;},{&quot;effect&quot;:&quot;improve&quot;},{&quot;format&quot;:&quot;auto&quot;},{&quot;quality&quot;:&quot;auto&quot;}],&quot;transformation_string&quot;:&quot;e_gen_restore\\\/e_improve\\\/f_auto\\\/q_auto&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:null,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;website_assets\\\/samples\\\/restore\\\/restore_3.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget>\n\n<div class='c-callout  c-callout--inline-title c-callout--note'><strong class='c-callout__title'>Note:<\/strong> <p>For more information on Generative Restore, check out the complete <a href=\"https:\/\/cloudinary.com\/documentation\/transformation_reference#e_gen_restore\">documentation<\/a> or try the <a href=\"https:\/\/ai.cloudinary.com\/demos\/restore\">demo<\/a>. This feature is currently in beta, so please read the usage notes.<\/p>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Use Cases<\/h2>\n\n\n\n<p><strong>1. Enhancing user-generated content (UGC). <\/strong>User-generated content often suffers from over-compression, especially when captured by amateur photographers. By combining Generative Restore with <code>e_improve<\/code>, you can elevate the quality of UGC images.<\/p>\n\n\n\n<p><strong>2. Restoring old images. <\/strong>Vintage and historical photos scanned for use in websites and apps, such as news and entertainment platforms, can benefit immensely from Generative Restore.&nbsp;<\/p>\n\n\n\n<p><strong>3. Correcting damaged images.<\/strong> In many instances, the original image is nowhere to be found. Derivative images suffer from over-compression or other production-related damage. Generative Restore can salvage these assets to their original state.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Generative Restore by Cloudinary is a powerful tool for anyone dealing with old, damaged, or poorly compressed images. With the power of generative AI, you can revive your visuals, eliminate imperfections, and ensure your content stands out. Whether you need to improve vintage images for historical preservation or enhance modern user-generated content, Generative Restore empowers you to achieve great results effortlessly. Sign up today for a<a href=\"https:\/\/cloudinary.com\/users\/register_free\" target=\"_blank\" rel=\"noreferrer noopener\"> free Cloudinary account<\/a>.<\/p>\n\n\n\n<p>Want to discuss the topic of this blog in more detail? Then head over to the <a href=\"https:\/\/community.cloudinary.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary Community<\/a> or its associated <a href=\"https:\/\/discord.gg\/Cloudinary\" target=\"_blank\" rel=\"noreferrer noopener\">Discord<\/a> and get all your questions answered.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cloudinary continues to add Generative AI innovations to its Programmable Media product with its latest offering: Generative Restore. This new tool uses Generative AI to correct old and damaged images. Whether dealing with user-generated content, vintage photographs, scanned images, or pictures damaged by over-compression, Generative Restore can bring what was once difficult to see into [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":31144,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[409,165],"class_list":["post-31138","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-generative-ai","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>Generative AI Restores Imperfect Photos to Perfection<\/title>\n<meta name=\"description\" content=\"Cloudinary continues to add Generative AI innovations to its Programmable Media product with its latest offering: Generative Restore. This new tool uses\" \/>\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-ai-restores-imperfect-photos\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Generative AI Restores Imperfect Photos to Perfection\" \/>\n<meta property=\"og:description\" content=\"Cloudinary continues to add Generative AI innovations to its Programmable Media product with its latest offering: Generative Restore. This new tool uses\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-14T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-24T00:34:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1694539359\/Blog-ai-restore\/Blog-ai-restore-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\/generative-ai-restores-imperfect-photos#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos\"},\"author\":{\"name\":\"melindapham\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\"},\"headline\":\"Generative AI Restores Imperfect Photos to Perfection\",\"datePublished\":\"2023-09-14T14:00:00+00:00\",\"dateModified\":\"2024-10-24T00:34:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos\"},\"wordCount\":458,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694539359\/Blog-ai-restore\/Blog-ai-restore.jpg?_i=AA\",\"keywords\":[\"Generative AI\",\"Image Transformation\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2023\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos\",\"url\":\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos\",\"name\":\"Generative AI Restores Imperfect Photos to Perfection\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694539359\/Blog-ai-restore\/Blog-ai-restore.jpg?_i=AA\",\"datePublished\":\"2023-09-14T14:00:00+00:00\",\"dateModified\":\"2024-10-24T00:34:09+00:00\",\"description\":\"Cloudinary continues to add Generative AI innovations to its Programmable Media product with its latest offering: Generative Restore. This new tool uses\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694539359\/Blog-ai-restore\/Blog-ai-restore.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694539359\/Blog-ai-restore\/Blog-ai-restore.jpg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Generative AI Restores Imperfect Photos to Perfection\"}]},{\"@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":"Generative AI Restores Imperfect Photos to Perfection","description":"Cloudinary continues to add Generative AI innovations to its Programmable Media product with its latest offering: Generative Restore. This new tool uses","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-ai-restores-imperfect-photos","og_locale":"en_US","og_type":"article","og_title":"Generative AI Restores Imperfect Photos to Perfection","og_description":"Cloudinary continues to add Generative AI innovations to its Programmable Media product with its latest offering: Generative Restore. This new tool uses","og_url":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos","og_site_name":"Cloudinary Blog","article_published_time":"2023-09-14T14:00:00+00:00","article_modified_time":"2024-10-24T00:34:09+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1694539359\/Blog-ai-restore\/Blog-ai-restore-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\/generative-ai-restores-imperfect-photos#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos"},"author":{"name":"melindapham","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9"},"headline":"Generative AI Restores Imperfect Photos to Perfection","datePublished":"2023-09-14T14:00:00+00:00","dateModified":"2024-10-24T00:34:09+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos"},"wordCount":458,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694539359\/Blog-ai-restore\/Blog-ai-restore.jpg?_i=AA","keywords":["Generative AI","Image Transformation"],"inLanguage":"en-US","copyrightYear":"2023","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos","url":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos","name":"Generative AI Restores Imperfect Photos to Perfection","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694539359\/Blog-ai-restore\/Blog-ai-restore.jpg?_i=AA","datePublished":"2023-09-14T14:00:00+00:00","dateModified":"2024-10-24T00:34:09+00:00","description":"Cloudinary continues to add Generative AI innovations to its Programmable Media product with its latest offering: Generative Restore. This new tool uses","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694539359\/Blog-ai-restore\/Blog-ai-restore.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694539359\/Blog-ai-restore\/Blog-ai-restore.jpg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/generative-ai-restores-imperfect-photos#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Generative AI Restores Imperfect Photos to Perfection"}]},{"@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\/v1694539359\/Blog-ai-restore\/Blog-ai-restore.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/31138","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=31138"}],"version-history":[{"count":18,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/31138\/revisions"}],"predecessor-version":[{"id":36178,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/31138\/revisions\/36178"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/31144"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=31138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=31138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=31138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}