{"id":22175,"date":"2020-10-15T15:38:24","date_gmt":"2020-10-15T15:38:24","guid":{"rendered":"http:\/\/how_quality_and_quantity_can_go_hand_in_hand"},"modified":"2024-08-21T18:17:39","modified_gmt":"2024-08-22T01:17:39","slug":"how_quality_and_quantity_can_go_hand_in_hand","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand","title":{"rendered":"Cloudinary&#8217;s Extended Image Quality Analysis: How Quality and Quantity Can Go Hand in Hand"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>When it comes to quality versus quantity, you\u2019ll often hear people say, \u201cIt\u2019s the quality that counts, not the quantity\u201d. While that\u2019s true in many situations, there are also cases where you want both quality and quantity. You may have thousands of images on your website and you want them all to look great. This is especially important if your website allows users to upload their own content, for example, to sell their own products or services. You don\u2019t want their poor quality images to reflect badly on your brand.<\/p>\n<p>Manually checking that each image lives up to your quality standards is incredibly time consuming, so more companies are looking towards automation as a solution. Cloudinary\u2019s <a href=\"https:\/\/cloudinary.com\/documentation\/analysis_on_upload#extended_quality_analysis\">extended image quality analysis<\/a> feature can help you to automate and accelerate the process of determining which images aren\u2019t up to par.<\/p>\n<h2>Tell Me More<\/h2>\n<p>You can have Cloudinary analyze your existing images and\/or new images as they\u2019re being uploaded. The response to a request for quality analysis includes a variety of scores (each ranging from 0.0 to 1.0) for different aspects of the image, together with an overall weighted quality score. Take this photo as an example, shown together with its quality analysis scores:<\/p>\n<p>td, th {\nfont-size: 13px;\nborder: none;\npadding-left: 0px ;\npadding-right: 0px ;<br \/>\nvertical-align: top;\noverflow-wrap: break-word;\nline-height: 1.2;\n}<\/p>\n<table style=\"border-spacing: 15px;border-collapse: separate\">\n<tr>\n<td><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_450\/v1600959150\/docs\/dancing.jpg\"><\/td><td style=\"padding-left: 10px;padding-right: 10px\" bgcolor=\"black\"><font color=\"white\"><br>&#8220;quality_analysis&#8221;: {<br>&#8220;jpeg_quality&#8221;: 0.68,<br>&#8220;jpeg_chroma&#8221;: 0.25,<br>&#8220;focus&#8221;: 0.71,<br>&#8220;noise&#8221;: 1.0,<br>&#8220;contrast&#8221;: 0.83,<br>&#8220;exposure&#8221;: 1.0,<br>&#8220;saturation&#8221;: 1.0,<br>&#8220;lighting&#8221;: 0.98,<br>&#8220;pixel_score&#8221;: 0.5,<br>&#8220;color_score&#8221;: 0.9,<br>&#8220;dct&#8221;: 0.29,<br>&#8220;blockiness&#8221;: 0.84,<br>&#8220;chroma_subsampling&#8221;: 0.15,<br>&#8220;resolution&#8221;: 0.92<br>},<br>&#8220;quality_score&#8221;: 0.68<br><br><\/font><\/td><\/tr><\/table>\n<h2>Defining Quality<\/h2>\n<p>Broadly speaking, the scores can be divided into pixel quality evaluations (that contribute to the <code>pixel_score<\/code>) and color quality evaluations (that contribute to the <code>color_score<\/code>). Images with low pixel scores look better when downscaled, so this score might not be so important to you if the display size is small compared to the overall resolution. In contrast, changing the scale of images with low color scores doesn\u2019t affect their perceived quality. Here\u2019s a quick explanation of each of the scores:<\/p>\n<img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/l_docs:guy_jpeg_006,y_130\/l_docs:guy_focus_001,y_195\/l_docs:guy_dct_005,y_260\/l_docs:guy_blockiness_079,y_325\/l_docs:guy_color_score_100,y_390\/l_docs:guy_contrast_049,y_455\/l_docs:guy_exposure_081,y_520\/l_docs:guy_saturation_038,y_585\/l_docs:guy_lighting_056,y_650\/docs\/guy_pixel_score_088.jpg\" alt=\"Various images with quality scores\" style=\"float:right\">\n<p>The following scores contribute to the overall <code>pixel_score<\/code>:<\/p>\n<ul>\n<li>\n<p><strong>jpeg_quality<\/strong>: A JPEG image with low <code>jpeg_quality<\/code> shows more compression artifacts, especially obvious when an image is upscaled, or zoomed in.<\/p>\n<\/li>\n<li>\n<p><strong>jpeg_chroma<\/strong>: Indicates how many chroma pixels per pixel there are in a JPEG file, based on <a href=\"https:\/\/cloudinary.com\/glossary\/chroma-subsampling\">chroma subsampling<\/a>. This score doesn\u2019t significantly impact the overall <code>pixel_score<\/code> since 4:2:0 is often fine. The <code>jpeg_chroma<\/code> score can be:<\/p>\n<ul>\n<li>1.0 for 4:4:4 chroma subsampling<\/li>\n<li>0.5 for 4:2:2 chroma subsampling<\/li>\n<li>0.25 for 4:2:0 chroma subsampling<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>focus<\/strong>: How blurry the whole image is. If an object in the image is in focus then the score is high. If nothing is in focus, the score is low.<\/p>\n<\/li>\n<li>\n<p><strong>noise<\/strong>: How much sensor (camera) noise there appears to be. Lower scores indicate more noise.<\/p>\n<\/li>\n<li>\n<p><strong>dct<\/strong>: A measure of DCT-like artifacts, for example, ringing. The <code>dct<\/code> score is low if the image has been JPEG-compressed. It\u2019s similar to <code>jpeg_quality<\/code> except that it\u2019s still relevant even if the image\u2019s current format isn\u2019t a JPEG, or if a low-quality JPEG was re-saved as a high-quality JPEG.<\/p>\n<\/li>\n<li>\n<p><strong>blockiness<\/strong>: A low <code>blockiness<\/code> score indicates noticeable blockiness from block-based compression.<\/p>\n<\/li>\n<li>\n<p><strong>chroma_subsampling<\/strong>: A measure of whether the image looks like it has been chroma subsampled. This is similar to <code>jpeg_chroma<\/code> but is valid for formats other than JPEG, so for example, a lossy WebP or a 4:2:0 JPEG saved again as PNG will still have a low score for <code>chroma_subsampling<\/code>. This score doesn\u2019t significantly impact the overall <code>pixel_score<\/code> since 4:2:0 is often fine.<\/p>\n<\/li>\n<\/ul>\n<p>The following scores contribute to the overall <code>color_score<\/code>:<\/p>\n<ul>\n<li>\n<p><strong>contrast<\/strong>: Whether the image uses the full range from dark colors to bright colors. Dull images give low <code>contrast<\/code> scores.<\/p>\n<\/li>\n<li>\n<p><strong>exposure<\/strong>: The <code>exposure<\/code> score is low if the image is over- or under-exposed.<\/p>\n<\/li>\n<li>\n<p><strong>saturation<\/strong>: A measure of how vivid the colors are. A low <code>saturation<\/code> score doesn\u2019t necessarily mean the quality is bad, as it could be artistically black and white, so this score doesn\u2019t significantly impact the overall <code>color_score<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>lighting<\/strong>: Low <code>lighting<\/code> scores may be due to a white balance issue or a color bias.<\/p>\n<\/li>\n<\/ul>\n<h2>See How It\u2019s Done<\/h2>\n<p>Before we go any further, you should know that this functionality is currently in Beta, so you need to <a href=\"https:\/\/support.cloudinary.com\/hc\/en-us\/requests\/new\">request to take part<\/a> in the trial to activate it on your account.<\/p>\n<p>After the feature is activated, you can request for the image to be analyzed by setting the <code>quality_analysis<\/code> parameter to <code>true<\/code> in your <a href=\"https:\/\/cloudinary.com\/documentation\/image_upload_api_reference#upload_method\">upload<\/a> or <a href=\"https:\/\/cloudinary.com\/documentation\/image_upload_api_reference#explicit_method\">explicit<\/a> calls. Here\u2019s how it\u2019s done in an upload call:<\/p>\n<cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;Cloudinary::Uploader.upload(\\&quot;user_photo.jpg\\&quot;,\\n :quality_analysis =&amp;gt; true)&quot;,&quot;codeSnippet&quot;:&quot;Cloudinary::Uploader.upload(\\&quot;user_photo.jpg\\&quot;,\\n :quality_analysis =&amp;gt; true)&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;rawCodeSnippet&quot;:&quot;\\\\Cloudinary\\\\Uploader::upload(\\&quot;user_photo.jpg\\&quot;,\\n array( \\&quot;quality_analysis\\&quot; =&amp;gt; TRUE ));&quot;,&quot;codeSnippet&quot;:&quot;\\\\Cloudinary\\\\Uploader::upload(\\&quot;user_photo.jpg\\&quot;,\\n array( \\&quot;quality_analysis\\&quot; =&amp;gt; TRUE ));&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.uploader.upload(\\&quot;user_photo.jpg\\&quot;,\\n quality_analysis = true)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.uploader.upload(\\&quot;user_photo.jpg\\&quot;,\\n quality_analysis = true)&quot;},{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;javascript&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.v2.uploader.upload(\\&quot;user_photo.jpg\\&quot;,\\n { quality_analysis: true },\\n function(error, result) { console.log(result, error); });&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.v2.uploader.upload(\\&quot;user_photo.jpg\\&quot;,\\n { quality_analysis: true },\\n function(error, result) { console.log(result, error); });&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.uploader().upload(\\&quot;user_photo.jpg\\&quot;,\\n Cloudinary.asMap(\\&quot;quality_analysis\\&quot;, true));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.uploader().upload(\\&quot;user_photo.jpg\\&quot;,\\n Cloudinary.asMap(\\&quot;quality_analysis\\&quot;, true));&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;java&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;var uploadParams = new ImageUploadParams(){\\n File = new FileDescription(@\\&quot;user_photo.jpg\\&quot;),\\n QualityAnalysis = true};\\nvar uploadResult = cloudinary.Upload(uploadParams);&quot;,&quot;codeSnippet&quot;:&quot;var uploadParams = new ImageUploadParams(){\\n File = new FileDescription(@\\&quot;user_photo.jpg\\&quot;),\\n QualityAnalysis = true};\\nvar uploadResult = cloudinary.Upload(uploadParams);&quot;},{&quot;sdkId&quot;:&quot;cli&quot;,&quot;framework&quot;:&quot;cli&quot;,&quot;language&quot;:&quot;cli&quot;,&quot;displayName&quot;:&quot;CLI&quot;,&quot;packageName&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;cld uploader upload user_photo.jpg quality_analysis=true&quot;,&quot;codeSnippet&quot;:&quot;cld uploader upload user_photo.jpg quality_analysis=true&quot;}]\"\n      parsed-url=\"[]\"\n      with-url=\"false\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget>\n<p>You can also use an <a href=\"https:\/\/cloudinary.com\/documentation\/upload_presets\">upload preset<\/a> with the <strong>quality analysis<\/strong> setting enabled, as demonstrated in this CodePen example (the upload preset is called <code>docs_quality_analysis<\/code>). Try uploading any image below, and see its quality scores in the response:<\/p>\n<p>See the Pen <a href=\"https:\/\/codepen.io\/team\/Cloudinary\/pen\/bGpybeP\">\nReturn Extended Quality Analysis on Upload<\/a> by Cloudinary (<a href=\"https:\/\/codepen.io\/team\/Cloudinary\">@Cloudinary<\/a>)\non <a href=\"https:\/\/codepen.io\">CodePen<\/a>.<\/p>\n<br>\nIf you request the analysis as part of an upload, the main scores are indexed, so you\u2019ll also be able to search on `quality_score`, `quality_analysis.pixel_score` and `quality_analysis.color_score` when you later want to find images that meet a certain quality threshold.\n<p>For example, to find all images that have a <code>pixel_score<\/code> greater than 0.8, use the search API expression: <code>quality_analysis.pixel_score&amp;gt;0.8<\/code>. To have the quality scores returned in the result (in any search), set <code>with_field<\/code> to <code>quality_analysis<\/code>:<\/p>\n<cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;result = Cloudinary::Search\\n     .expression(&#039;quality_analysis.pixel_score&amp;gt;0.8&#039;)\\n     .with_field(&#039;quality_analysis&#039;)\\n     .execute&quot;,&quot;codeSnippet&quot;:&quot;result = Cloudinary::Search\\n     .expression(&#039;quality_analysis.pixel_score&amp;gt;0.8&#039;)\\n     .with_field(&#039;quality_analysis&#039;)\\n     .execute&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;rawCodeSnippet&quot;:&quot;result = \\\\Cloudinary\\\\search\\n     -&amp;gt;expression(&#039;quality_analysis.pixel_score&amp;gt;0.8&#039;)\\n     -&amp;gt;with_field(&#039;quality_analysis&#039;)\\n     -&amp;gt;execute();&quot;,&quot;codeSnippet&quot;:&quot;result = \\\\Cloudinary\\\\search\\n     -&amp;gt;expression(&#039;quality_analysis.pixel_score&amp;gt;0.8&#039;)\\n     -&amp;gt;with_field(&#039;quality_analysis&#039;)\\n     -&amp;gt;execute();&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;result = cloudinary.Search()\\\\\\n     .expression(&#039;quality_analysis.pixel_score&amp;gt;0.8&#039;)\\\\\\n     .with_field(&#039;quality_analysis&#039;)\\\\\\n     .execute()&quot;,&quot;codeSnippet&quot;:&quot;result = cloudinary.Search()\\\\\\n     .expression(&#039;quality_analysis.pixel_score&amp;gt;0.8&#039;)\\\\\\n     .with_field(&#039;quality_analysis&#039;)\\\\\\n     .execute()&quot;},{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;javascript&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.v2.search\\n     .expression(&#039;quality_analysis.pixel_score&amp;gt;0.8&#039;)\\n     .with_field(&#039;quality_analysis&#039;)\\n     .execute().then(result=&amp;gt;console.log(result));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.v2.search\\n     .expression(&#039;quality_analysis.pixel_score&amp;gt;0.8&#039;)\\n     .with_field(&#039;quality_analysis&#039;)\\n     .execute().then(result=&amp;gt;console.log(result));&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;result = cloudinary.search()\\n     .expression(\\&quot;quality_analysis.pixel_score&amp;gt;0.8\\&quot;)\\n     .withField(\\&quot;quality_analysis\\&quot;)\\n     .execute();&quot;,&quot;codeSnippet&quot;:&quot;result = cloudinary.search()\\n     .expression(\\&quot;quality_analysis.pixel_score&amp;gt;0.8\\&quot;)\\n     .withField(\\&quot;quality_analysis\\&quot;)\\n     .execute();&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;java&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;SearchResult result = cloudinary.Search()\\n     .Expression(\\&quot;quality_analysis.pixel_score&amp;gt;0.8\\&quot;)\\n     .WithField(\\&quot;quality_analysis\\&quot;)\\n     .Execute();&quot;,&quot;codeSnippet&quot;:&quot;SearchResult result = cloudinary.Search()\\n     .Expression(\\&quot;quality_analysis.pixel_score&amp;gt;0.8\\&quot;)\\n     .WithField(\\&quot;quality_analysis\\&quot;)\\n     .Execute();&quot;},{&quot;sdkId&quot;:&quot;cli&quot;,&quot;framework&quot;:&quot;cli&quot;,&quot;language&quot;:&quot;cli&quot;,&quot;displayName&quot;:&quot;CLI&quot;,&quot;packageName&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;cld search \\&quot;quality_analysis.pixel_score&amp;gt;0.8\\&quot; -f quality_analysis&quot;,&quot;codeSnippet&quot;:&quot;cld search \\&quot;quality_analysis.pixel_score&amp;gt;0.8\\&quot; -f quality_analysis&quot;},{&quot;sdkId&quot;:&quot;endpoint&quot;,&quot;framework&quot;:&quot;endpoint&quot;,&quot;language&quot;:&quot;endpoint&quot;,&quot;displayName&quot;:&quot;Endpoint&quot;,&quot;packageName&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;curl \\\\\\n     -H \\&quot;Content-Type: application\\\/json\\&quot; \\\\\\n     -d &#039;{\\n           \\&quot;expression\\&quot;: \\&quot;quality_analysis.pixel_score&amp;gt;0.8\\&quot;,\\n           \\&quot;with_field\\&quot;: [\\&quot;quality_analysis\\&quot;]\\n         }&#039; \\\\\\n     https:\\\/\\\/:@api.cloudinary.com\\\/v1_1\\\/\\\/resources\\\/search&quot;,&quot;codeSnippet&quot;:&quot;curl \\\\\\n     -H \\&quot;Content-Type: application\\\/json\\&quot; \\\\\\n     -d &#039;{\\n           \\&quot;expression\\&quot;: \\&quot;quality_analysis.pixel_score&amp;gt;0.8\\&quot;,\\n           \\&quot;with_field\\&quot;: [\\&quot;quality_analysis\\&quot;]\\n         }&#039; \\\\\\n     https:\\\/\\\/:@api.cloudinary.com\\\/v1_1\\\/\\\/resources\\\/search&quot;}]\"\n      parsed-url=\"[]\"\n      with-url=\"false\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget>\n<h2>Room for Improvement<\/h2>\n<p>The great thing about Cloudinary is that it not only tells you when your images can be improved, but it can also automatically improve them for you!<\/p>\n<p>Particularly good for user-generated content, the <a href=\"https:\/\/cloudinary.com\/documentation\/image_transformations#image_improvement_effects\">improve<\/a> effect (<code>e_improve<\/code> in URLs) re-touches images using a fully automated image improvement filter for adjusting image colors, contrast and lighting.<\/p>\n<p>Simply by adding the <code>improve<\/code> effect to the image\u2019s URL, you\u2019ll notice a big difference in visual quality, as well as in the scores:<\/p>\n<p><cld-code-widget\n      class=\" 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;docs\\\/dancing.jpg\\&quot;, {effect: \\&quot;improve\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;docs\\\/dancing.jpg\\&quot;, {effect: \\&quot;improve\\&quot;})&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;docs\\\/dancing.jpg\\&quot;).adjust(improve());&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;).adjust(improve());&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;docs\\\/dancing.jpg\\&quot; &gt; &lt;Transformation effect=\\&quot;improve\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;docs\\\/dancing.jpg\\&quot; &gt;\\n\\t&lt;Transformation effect=\\&quot;improve\\&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;docs\\\/dancing.jpg\\&quot;).adjust(improve());&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;).adjust(improve());&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;docs\\\/dancing.jpg\\&quot; &gt; &lt;cld-transformation effect=\\&quot;improve\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;docs\\\/dancing.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation effect=\\&quot;improve\\&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;docs\\\/dancing.jpg\\&quot;).adjust(improve());&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;).adjust(improve());&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;docs\\\/dancing.jpg\\&quot; &gt; &lt;cl-transformation effect=\\&quot;improve\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;docs\\\/dancing.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation effect=\\&quot;improve\\&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;docs\\\/dancing.jpg\\&quot;).adjust(improve());&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;).adjust(improve());&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;docs\\\/dancing.jpg&#039;, {effect: \\&quot;improve\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;docs\\\/dancing.jpg&#039;, {effect: \\&quot;improve\\&quot;}).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;docs\\\/dancing.jpg\\&quot;).image(effect=\\&quot;improve\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;).image(effect=\\&quot;improve\\&quot;)&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;docs\\\/dancing.jpg&#039;))\\n\\t-&gt;adjust(Adjust::improve());&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;docs\\\/dancing.jpg&#039;))\\n\\t-&gt;adjust(Adjust::improve());&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;docs\\\/dancing.jpg\\&quot;, array(\\&quot;effect\\&quot;=&gt;\\&quot;improve\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;docs\\\/dancing.jpg\\&quot;, array(\\&quot;effect\\&quot;=&gt;\\&quot;improve\\&quot;))&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;improve\\&quot;)).imageTag(\\&quot;docs\\\/dancing.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().effect(\\&quot;improve\\&quot;)).imageTag(\\&quot;docs\\\/dancing.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;docs\\\/dancing.jpg\\&quot;, effect: \\&quot;improve\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;docs\\\/dancing.jpg\\&quot;, effect: \\&quot;improve\\&quot;)&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;improve\\&quot;)).BuildImageTag(\\&quot;docs\\\/dancing.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Effect(\\&quot;improve\\&quot;)).BuildImageTag(\\&quot;docs\\\/dancing.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;docs\\\/dancing.jpg&#039;).transformation(Transformation()\\n\\t.adjust(Adjust.improve()));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;docs\\\/dancing.jpg&#039;).transformation(Transformation()\\n\\t.adjust(Adjust.improve()));&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;improve\\&quot;)).generate(\\&quot;docs\\\/dancing.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setEffect(\\&quot;improve\\&quot;)).generate(\\&quot;docs\\\/dancing.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;improve\\&quot;)).generate(\\&quot;docs\\\/dancing.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().effect(\\&quot;improve\\&quot;)).generate(\\&quot;docs\\\/dancing.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;docs\\\/dancing.jpg&#039;).transformation(Transformation()\\n\\t.adjust(Adjust.improve()));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;docs\\\/dancing.jpg&#039;).transformation(Transformation()\\n\\t.adjust(Adjust.improve()));&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;docs\\\/dancing.jpg\\&quot;)\\n\\t adjust(Adjust.improve()) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;docs\\\/dancing.jpg\\&quot;)\\n\\t adjust(Adjust.improve()) \\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;docs\\\/dancing.jpg\\&quot;, {effect: \\&quot;improve\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;docs\\\/dancing.jpg\\&quot;, {effect: \\&quot;improve\\&quot;})&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;docs\\\/dancing.jpg\\&quot;).adjust(improve());&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;).adjust(improve());&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\\\/demo\\\/image\\\/upload\\\/e_improve\\\/docs\\\/dancing.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&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;improve&quot;}],&quot;transformation_string&quot;:&quot;e_improve&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:null,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;docs\\\/dancing.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><\/p>\n<table style=\"border-spacing: 15px;border-collapse: separate\">\n<tr>\n<td style=\"font-size: 15px;text-align: center\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/v1600959150\/docs\/dancing.jpg\"><br><b>Original Image<\/b><br><br><\/td><td style=\"font-size: 15px;text-align: center\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/e_improve\/v1600959150\/docs\/dancing.jpg\"><br><b>With <code>e_improve<\/code><\/b><br><br><\/td><\/tr><tr><td style=\"padding-left: 10px\" bgcolor=\"black\"><font color=\"white\"><br>&#8220;quality_analysis&#8221;: {<br>&#8220;jpeg_quality&#8221;: 0.68,<br>&#8220;jpeg_chroma&#8221;: 0.25,<br>&#8220;focus&#8221;: 0.71,<br>&#8220;noise&#8221;: 1.0,<br>&#8220;contrast&#8221;: 0.83,<br>&#8220;exposure&#8221;: 1.0,<br>&#8220;saturation&#8221;: 1.0,<br>&#8220;lighting&#8221;: 0.98,<br>&#8220;pixel_score&#8221;: 0.5,<br>&#8220;color_score&#8221;: 0.9,<br>&#8220;dct&#8221;: 0.29,<br>&#8220;blockiness&#8221;: 0.84,<br>&#8220;chroma_subsampling&#8221;: 0.15,<br>&#8220;resolution&#8221;: 0.92<br>},<br>&#8220;quality_score&#8221;: 0.68<br><br><\/td><td style=\"padding-left: 10px\" bgcolor=\"black\"><font color=\"white\"><br>&#8220;quality_analysis&#8221;: {<br>&#8220;jpeg_quality&#8221;: 0.76,<br>&#8220;jpeg_chroma&#8221;: 0.25,<br> &#8220;focus&#8221;: 1.0,<br>&#8220;noise&#8221;: 1.0,<br> &#8220;contrast&#8221;: 1.0,<br> &#8220;exposure&#8221;: 1.0,<br>&#8220;saturation&#8221;: 1.0,<br>&#8220;lighting&#8221;: 1.0,<br>&#8220;pixel_score&#8221;: 0.81,<br>&#8220;color_score&#8221;: 1.0,<br>&#8220;dct&#8221;: 0.68,<br> &#8220;blockiness&#8221;: 0.71,<br> &#8220;chroma_subsampling&#8221;: 0.16,<br>&#8220;resolution&#8221;: 0.92<br>},<br> &#8220;quality_score&#8221;: 0.87<br><br><\/td><\/tr><\/table>\n<p>For this image, the <code>improve<\/code> effect has increased the <code>color_score<\/code> to 1.0 and boosted the <code>pixel_score<\/code> to 0.81 (note that the improved image was saved and re-uploaded to obtain the new scores).<\/p>\n<p>If you look at the image size in bytes though, you\u2019ll notice that\u2019s also increased. The original image is 233 KB, but the improved one is 526 KB. You can reduce this by using another of Cloudinary\u2019s features: <a href=\"https:\/\/cloudinary.com\/documentation\/image_transformations#automatic_quality_and_encoding_settings\">automatic quality<\/a> (<code>q_auto<\/code> in URLs). Automatic quality takes into account the trade-off between file size and quality. It gives you the smallest file size with the least impact to visual quality. Applying automatic quality in this case takes the size back down to 242 KB. Here\u2019s how the scores are affected:<\/p>\n<p><cld-code-widget\n      class=\" 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;docs\\\/dancing.jpg\\&quot;, {transformation: [ {effect: \\&quot;improve\\&quot;}, {quality: \\&quot;auto\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;docs\\\/dancing.jpg\\&quot;, {transformation: [\\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;docs\\\/dancing.jpg\\&quot;)\\n  .adjust(improve())\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;)\\n  .adjust(improve())\\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;docs\\\/dancing.jpg\\&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;docs\\\/dancing.jpg\\&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;docs\\\/dancing.jpg\\&quot;)\\n  .adjust(improve())\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;)\\n  .adjust(improve())\\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;docs\\\/dancing.jpg\\&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;docs\\\/dancing.jpg\\&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;docs\\\/dancing.jpg\\&quot;)\\n  .adjust(improve())\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;)\\n  .adjust(improve())\\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;docs\\\/dancing.jpg\\&quot; &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;docs\\\/dancing.jpg\\&quot; &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;docs\\\/dancing.jpg\\&quot;)\\n  .adjust(improve())\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;)\\n  .adjust(improve())\\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;docs\\\/dancing.jpg&#039;, {transformation: [ {effect: \\&quot;improve\\&quot;}, {quality: \\&quot;auto\\&quot;} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;docs\\\/dancing.jpg&#039;, {transformation: [\\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;docs\\\/dancing.jpg\\&quot;).image(transformation=[ {&#039;effect&#039;: \\&quot;improve\\&quot;}, {&#039;quality&#039;: \\&quot;auto\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;).image(transformation=[\\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;docs\\\/dancing.jpg&#039;))\\n\\t-&gt;adjust(Adjust::improve())\\n\\t-&gt;delivery(Delivery::quality(\\n\\tQuality::auto()));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;docs\\\/dancing.jpg&#039;))\\n\\t-&gt;adjust(Adjust::improve())\\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;docs\\\/dancing.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( 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;docs\\\/dancing.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\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;improve\\&quot;).chain() .quality(\\&quot;auto\\&quot;)).imageTag(\\&quot;docs\\\/dancing.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .effect(\\&quot;improve\\&quot;).chain()\\n  .quality(\\&quot;auto\\&quot;)).imageTag(\\&quot;docs\\\/dancing.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;docs\\\/dancing.jpg\\&quot;, transformation: [ {effect: \\&quot;improve\\&quot;}, {quality: \\&quot;auto\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;docs\\\/dancing.jpg\\&quot;, transformation: [\\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;improve\\&quot;).Chain() .Quality(\\&quot;auto\\&quot;)).BuildImageTag(\\&quot;docs\\\/dancing.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Effect(\\&quot;improve\\&quot;).Chain()\\n  .Quality(\\&quot;auto\\&quot;)).BuildImageTag(\\&quot;docs\\\/dancing.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;docs\\\/dancing.jpg&#039;).transformation(Transformation()\\n\\t.adjust(Adjust.improve())\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;docs\\\/dancing.jpg&#039;).transformation(Transformation()\\n\\t.adjust(Adjust.improve())\\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;improve\\&quot;).chain() .setQuality(\\&quot;auto\\&quot;)).generate(\\&quot;docs\\\/dancing.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setEffect(\\&quot;improve\\&quot;).chain()\\n  .setQuality(\\&quot;auto\\&quot;)).generate(\\&quot;docs\\\/dancing.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;improve\\&quot;).chain() .quality(\\&quot;auto\\&quot;)).generate(\\&quot;docs\\\/dancing.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .effect(\\&quot;improve\\&quot;).chain()\\n  .quality(\\&quot;auto\\&quot;)).generate(\\&quot;docs\\\/dancing.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;docs\\\/dancing.jpg&#039;).transformation(Transformation()\\n\\t.adjust(Adjust.improve())\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;docs\\\/dancing.jpg&#039;).transformation(Transformation()\\n\\t.adjust(Adjust.improve())\\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;docs\\\/dancing.jpg\\&quot;)\\n\\t adjust(Adjust.improve())\\n\\t delivery(Delivery.quality(\\n\\tQuality.auto())) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;docs\\\/dancing.jpg\\&quot;)\\n\\t adjust(Adjust.improve())\\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;docs\\\/dancing.jpg\\&quot;, {transformation: [ {effect: \\&quot;improve\\&quot;}, {quality: \\&quot;auto\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;docs\\\/dancing.jpg\\&quot;, {transformation: [\\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;docs\\\/dancing.jpg\\&quot;)\\n  .adjust(improve())\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;docs\\\/dancing.jpg\\&quot;)\\n  .adjust(improve())\\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\\\/demo\\\/image\\\/upload\\\/e_improve\\\/q_auto\\\/docs\\\/dancing.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&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;improve&quot;},{&quot;quality&quot;:&quot;auto&quot;}],&quot;transformation_string&quot;:&quot;e_improve\\\/q_auto&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:null,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;docs\\\/dancing.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><\/p>\n<table style=\"border-spacing: 15px;border-collapse: separate\">\n<tr>\n<td><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_450\/e_improve\/q_auto\/docs\/dancing.jpg\"><\/td><td style=\"padding-left: 10px;padding-right: 10px\" bgcolor=\"black\"><font color=\"white\"><br>&#8220;quality_analysis&#8221;: {<br>&#8220;jpeg_quality&#8221;: 0.68,<br> &#8220;jpeg_chroma&#8221;: 0.25,<br>&#8220;focus&#8221;: 1.0,<br>&#8220;noise&#8221;: 1.0,<br> &#8220;contrast&#8221;: 1.0,<br>&#8220;exposure&#8221;: 1.0,<br> &#8220;saturation&#8221;: 1.0,<br>&#8220;lighting&#8221;: 1.0,<br> &#8220;pixel_score&#8221;: 0.74,<br> &#8220;color_score&#8221;: 1.0,<br> &#8220;dct&#8221;: 0.56,<br>&#8220;blockiness&#8221;: 0.72,<br> &#8220;chroma_subsampling&#8221;: 0.16,<br> &#8220;resolution&#8221;: 0.92<br>},<br>&#8220;quality_score&#8221;: 0.84<br><br><\/font><\/td><\/tr><\/table>\n<p>The overall <code>quality_score<\/code> is slightly reduced, due to the added compression, however the <code>color_score<\/code> remains at 1.0.<\/p>\n<p>There are other, more specific improvements you could make to your images too. For example, you can adjust the contrast, color bias or sharpen your image. Check out our <a href=\"https:\/\/cloudinary.com\/documentation\/transformation_reference\">extensive range of effects<\/a> and feel free to experiment!<\/p>\n<h2>Taking Action<\/h2>\n<p>Knowing the quality of your images up front can help you to automate your workflow. For example, you can combine quality analysis with the <a href=\"https:\/\/cloudinary.com\/documentation\/analysis_on_upload#evaluating_and_modifying_upload_parameters\">eval<\/a> feature to run functions that:<\/p>\n<ul>\n<li>Tag poor quality images<\/li>\n<li>Sort images into different folders based on specific scores<\/li>\n<li>Request <a href=\"https:\/\/cloudinary.com\/documentation\/analysis_on_upload#moderation_of_uploaded_assets\">manual moderation<\/a> for images that don\u2019t score highly enough in certain areas<\/li>\n<li>Apply an <a href=\"https:\/\/cloudinary.com\/documentation\/transformations_on_upload#incoming_transformations\">incoming transformation<\/a> to improve the quality of your images, before they\u2019re even stored in your DAM.<\/li>\n<\/ul>\n<p>Here\u2019s an example script that uses the <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_cli\">CLI<\/a> to upload all JPEGs in a folder, requesting <code>quality_analysis<\/code>, and, based on the scores, asks Cloudinary to do the following:<\/p>\n<ul>\n<li>If the <code>focus<\/code> is less than 0.5:\n<ul>\n<li>Request manual moderation on the image<\/li>\n<\/ul>\n<\/li>\n<li>Else if the <code>quality_score<\/code> is less than 0.8:\n<ul>\n<li>Apply the transformation <code>e_improve\/q_auto<\/code>\n<\/li>\n<li>Apply the tag <code>improved<\/code>\n<\/li>\n<li>Place the file in the folder <code>improved_quality<\/code>\n<\/li>\n<\/ul>\n<\/li>\n<li>Otherwise:\n<ul>\n<li>Apply the tag <code>perfect<\/code>\n<\/li>\n<li>Place the file in the folder <code>excellent_quality<\/code>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre class=\"js-syntax-highlighted\"><code>#!\/bin\/bash\n\nfor image in *.jpg\n\ndo\n\ncld upload &quot;$image&quot; quality_analysis=true -O eval 'if (resource_info.quality_analysis.focus &amp;lt; 0.5){upload_options[&amp;quot;moderation&amp;quot;]=&amp;quot;manual&amp;quot;;}else if (resource_info.quality_score &amp;lt; 0.8){upload_options[&amp;quot;transformation&amp;quot;]=&amp;quot;e_improve\/q_auto&amp;quot;;upload_options[&amp;quot;tags&amp;quot;]=&amp;quot;improved&amp;quot;;upload_options[&amp;quot;folder&amp;quot;]=&amp;quot;improved_quality&amp;quot;;}else{upload_options[&amp;quot;folder&amp;quot;]=&amp;quot;excellent_quality&amp;quot;;upload_options[&amp;quot;tags&amp;quot;]=&amp;quot;perfect&amp;quot;;}&amp;#039;\n  \ndone\n<\/code><\/pre>\n<h2>Quality in Abundance<\/h2>\n<p>Cloudinary\u2019s extended quality analysis feature gives you the means to focus on different quality aspects of your images without the need to look at each individually. You can process thousands of images, automatically ear-marking those that don\u2019t live up to your quality requirements, then decide whether or not you can improve them, or reject them. You can even give your users a facility to improve their photos as they upload them. Quality analysis is just one of Cloudinary&#8217;s image analysis features. Others include <a href=\"https:\/\/cloudinary.com\/documentation\/analysis_on_upload#accessibility_analysis\">accessibility analysis<\/a>, [semantic data extraction] (<a href=\"https:\/\/cloudinary.com\/documentation\/analysis_on_upload#semantic_data_extraction\">https:\/\/cloudinary.com\/documentation\/analysis_on_upload#semantic_data_extraction<\/a>) and <a href=\"https:\/\/cloudinary.com\/documentation\/analysis_on_upload#moderation_of_uploaded_assets\">moderation<\/a>. The abundant possibilities that Cloudinary offers means that, just like your brand, your website will always be top quality!<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":22176,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[119,151,227],"class_list":["post-22175","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-file-upload","tag-image-analysis","tag-performance-optimization"],"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>How Quality and Quantity can go Hand in Hand<\/title>\n<meta name=\"description\" content=\"Learn how Cloudinary\u2019s extended image quality analysis feature can help you to maintain the quality of your website even with user generated content.\" \/>\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\/how_quality_and_quantity_can_go_hand_in_hand\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cloudinary&#039;s Extended Image Quality Analysis: How Quality and Quantity Can Go Hand in Hand\" \/>\n<meta property=\"og:description\" content=\"Learn how Cloudinary\u2019s extended image quality analysis feature can help you to maintain the quality of your website even with user generated content.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-15T15:38:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-22T01:17:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1645222287\/website-2021\/blog\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b-png?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Cloudinary&#8217;s Extended Image Quality Analysis: How Quality and Quantity Can Go Hand in Hand\",\"datePublished\":\"2020-10-15T15:38:24+00:00\",\"dateModified\":\"2024-08-22T01:17:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand\"},\"wordCount\":15,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645222287\/website-2021\/blog\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b.png?_i=AA\",\"keywords\":[\"File-upload\",\"Image Analysis\",\"Performance Optimization\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2020\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand\",\"url\":\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand\",\"name\":\"How Quality and Quantity can go Hand in Hand\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645222287\/website-2021\/blog\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b.png?_i=AA\",\"datePublished\":\"2020-10-15T15:38:24+00:00\",\"dateModified\":\"2024-08-22T01:17:39+00:00\",\"description\":\"Learn how Cloudinary\u2019s extended image quality analysis feature can help you to maintain the quality of your website even with user generated content.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645222287\/website-2021\/blog\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645222287\/website-2021\/blog\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b.png?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cloudinary&#8217;s Extended Image Quality Analysis: How Quality and Quantity Can Go Hand in Hand\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How Quality and Quantity can go Hand in Hand","description":"Learn how Cloudinary\u2019s extended image quality analysis feature can help you to maintain the quality of your website even with user generated content.","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\/how_quality_and_quantity_can_go_hand_in_hand","og_locale":"en_US","og_type":"article","og_title":"Cloudinary's Extended Image Quality Analysis: How Quality and Quantity Can Go Hand in Hand","og_description":"Learn how Cloudinary\u2019s extended image quality analysis feature can help you to maintain the quality of your website even with user generated content.","og_url":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand","og_site_name":"Cloudinary Blog","article_published_time":"2020-10-15T15:38:24+00:00","article_modified_time":"2024-08-22T01:17:39+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1645222287\/website-2021\/blog\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b-png?_i=AA","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand"},"author":{"name":"","@id":""},"headline":"Cloudinary&#8217;s Extended Image Quality Analysis: How Quality and Quantity Can Go Hand in Hand","datePublished":"2020-10-15T15:38:24+00:00","dateModified":"2024-08-22T01:17:39+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand"},"wordCount":15,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645222287\/website-2021\/blog\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b.png?_i=AA","keywords":["File-upload","Image Analysis","Performance Optimization"],"inLanguage":"en-US","copyrightYear":"2020","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand","url":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand","name":"How Quality and Quantity can go Hand in Hand","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645222287\/website-2021\/blog\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b.png?_i=AA","datePublished":"2020-10-15T15:38:24+00:00","dateModified":"2024-08-22T01:17:39+00:00","description":"Learn how Cloudinary\u2019s extended image quality analysis feature can help you to maintain the quality of your website even with user generated content.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645222287\/website-2021\/blog\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645222287\/website-2021\/blog\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b.png?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/how_quality_and_quantity_can_go_hand_in_hand#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Cloudinary&#8217;s Extended Image Quality Analysis: How Quality and Quantity Can Go Hand in Hand"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645222287\/website-2021\/blog\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b\/How-Quality-and-Quantity-can-go-Hand-in-Hand-v2b.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=22175"}],"version-history":[{"count":6,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22175\/revisions"}],"predecessor-version":[{"id":35390,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22175\/revisions\/35390"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/22176"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=22175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=22175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=22175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}