{"id":21136,"date":"2012-05-30T08:59:11","date_gmt":"2012-05-30T08:59:11","guid":{"rendered":"http:\/\/placeholder_images_and_gravatar_integration_with_cloudinary"},"modified":"2025-03-08T14:48:20","modified_gmt":"2025-03-08T22:48:20","slug":"placeholder_images_and_gravatar_integration_with_cloudinary","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary","title":{"rendered":"Placeholder Images and Gravatar Integration With Cloudinary"},"content":{"rendered":"<div>Most web sites enrich their graphics by embedding pictures and photos of their model entities &#8211; users, articles, movies, etc. The graphic design of such web sites assumes that all these entities have associated pictures, otherwise the result will not look as satisfactory as intended. The graphics designer will not like it and the developer having to handle the boundary case of missing images won\u2019t enjoy this either.<\/div>\n<div><\/div>\n<div>To circumvent this issue, you can design default placeholder images for cases where an entity doesn\u2019t have its own image. You are probably well aware of the \u201cegg\u201d placeholder image Twitter uses as its default avatar placeholder and the person\u2019s silhouette that Facebook uses for individuals that haven\u2019t uploaded a profile photo.<\/div>\n<div><\/div>\n<h2>Introducing Cloudinary&#8217;s latest integration<\/h2>\n<div><\/div>\n<div>Cloudinary now supports delivering default images when a requested image does not exist. This is especially useful when you want to display an avatar placeholder for users without a Facebook or Twitter profile picture or for users that haven\u2019t uploaded their photo to your application.<\/div>\n<div>As a developer, you no longer have to care whether a picture is available for a certain entity. Cloudinary will automatically detect when an image is missing and deliver the alternative placeholder image through a fast CDN instead. In addition, Cloudinary will occasionally retry to fetch the original image, and use it instead of the placeholder for cases where it is made available at a later time.<\/div>\n<div>Specifying default images is done using Cloudinary transformations&#8217; <span style=\"color: #ba2121;\"><strong>&#8216;default_image&#8217;<\/strong><\/span> parameter (<span style=\"color: #ba2121;\"><strong>&#8216;d&#8217;<\/strong><\/span> in URLs).<\/div>\n<div>The following URL delivers a 100&#215;100 thumbnail of a profile image with the ID \u2018face_left\u2019 while specifying that the image with the \u2018avatar\u2019 public ID should be used in case that \u2018face_left\u2019 does not exist.<\/div>\n<div><\/div>\n<div><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_100,h_100,c_thumb,g_face,r_20,d_avatar.png\/face_left.png\" target=\"_blank\" rel=\"noopener\">&#8230;\/image\/upload\/w_100,h_100,c_thumb,g_face,r_20,<span style=\"color: #ba2121;\"><strong>d_avatar.png<\/strong><\/span>\/face_left.png<\/a><\/div>\n<div><\/div>\n<div><img loading=\"lazy\" decoding=\"async\" style=\"margin-left: auto; margin-right: auto;\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_100,h_100,c_thumb,g_face,r_20,d_avatar.png\/face_left.png\" alt=\"\" width=\"100\" height=\"100\" \/><\/div>\n<div><\/div>\n<div>When trying to access a non existing ID, the default avatar placeholder picture is displayed instead:<\/div>\n<div><\/div>\n<div><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_100,h_100,c_thumb,g_face,r_20,d_avatar.png\/non_existing_id.png\" target=\"_blank\" rel=\"noopener\">&#8230;\/image\/upload\/w_100,h_100,c_thumb,g_face,r_20,<strong><span style=\"color: #ba2121;\">d_avatar.png<\/span><\/strong>\/non_existing_id.png<\/a><\/div>\n<div><\/div>\n<div><img loading=\"lazy\" decoding=\"async\" style=\"margin-left: auto; margin-right: auto;\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_100,h_100,c_thumb,g_face,r_20,d_avatar.png\/non_existing_id.png\" alt=\"\" width=\"100\" height=\"100\" \/><\/div>\n<div><\/div>\n<div>\n<div>Notice that the requested transformation, in this case resizing to 100&#215;100, is done on the default image too, allowing you to upload a placeholder image once and transform it to many desired dimension in your various web pages.<\/div>\n<div>Here\u2019s the same example when integrating with one of Cloudinary\u2019s client libraries, in this case Ruby on Rails:<\/div>\n<pre>&lt;%= cl_image_tag(\"non_existing_id.png\", \n                 :width =&gt; 100, :height =&gt; 100, \n                 :crop =&gt; :thumb, :gravity =&gt; :face, :radius =&gt; 20, \n                 <span style=\"color: #ba2121;\">:default_image =&gt; \"avatar.png\"<\/span>) %&gt;\n<\/pre>\n<div>You can of course upload multiple placeholder images and use each image as the default for each different kind of model entity.<\/div>\n<div>You can also apply the same solution when using Cloudinary\u2019s automatic Facebook profile image fetching functionality. This allows you to specify an alternative default image to be used if the user does not exist on Facebook:<\/div>\n<\/div>\n<div><\/div>\n<div><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/facebook\/w_100,h_100,c_fill,d_avatar2.png\/non_existing_id.jpg\" target=\"_blank\" rel=\"noopener\">&#8230;\/image\/facebook\/w_100,h_100,c_fill,<span style=\"color: #ba2121;\"><strong>d_avatar2.png<\/strong><\/span>\/non_existing_id.jpg<\/a><\/div>\n<div><\/div>\n<div><img loading=\"lazy\" decoding=\"async\" style=\"margin-left: auto; margin-right: auto;\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/facebook\/w_100,h_100,c_fill,d_avatar2.png\/non_existing_id.jpg\" alt=\"\" width=\"100\" height=\"100\" \/><\/div>\n<div><\/div>\n<h3>Gravatar support<\/h3>\n<p>You have probably heard of <a href=\"http:\/\/en.gravatar.com\/\" target=\"_blank\" rel=\"noopener\">Gravatar<\/a>., a terrific service that allows you to host a single avatar (profile picture) to be used globally, rather than upload your profile photo on every website that requires it. Any user can sign up to Gravatar with his email address and upload a profile picture. Any website can then access that picture based on the email address of this user (encoded with MD5 hash for better privacy).<\/p>\n<p>Cloudinary already supports automatically fetching, resizing and delivering <a href=\"https:\/\/cloudinary.com\/documentation\/social_media_profile_pictures\">Facebook<\/a> and <a href=\"https:\/\/cloudinary.com\/documentation\/social_media_profile_pictures\">Twitter<\/a> profile pictures. We\u2019ve recently added support for Gravatar too. Starting today you can use Cloudinary to fetch your visitors\u2019 Gravatar images, transform these to match your graphics design (non-square pictures, rounded corners, face detection, etc.), use your own default image for non-existing avatar placeholder and enjoy smart caching and fast CDN delivery while automatically refreshing these images when changed.<\/p>\n<p>Embedding Gravatars is done by pointing to a URL like the one below. The &#8216;e3264cf16f34ecd3c7c564f5668cbc1e&#8217; string in this example is the MD5 hash for info@cloudinary.com.<\/p>\n<p><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/e3264cf16f34ecd3c7c564f5668cbc1e.jpg\" target=\"_blank\" rel=\"noopener\">&#8230;\/image\/gravatar\/e3264cf16f34ecd3c7c564f5668cbc1e.jpg<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"margin-left: auto; margin-right: auto;\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/e3264cf16f34ecd3c7c564f5668cbc1e.jpg\" alt=\"\" width=\"80\" height=\"80\" \/><\/p>\n<p>With Cloudinary you can of course transform the image to any desired dimension:<\/p>\n<p><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/w_120,h_80,c_fill\/e3264cf16f34ecd3c7c564f5668cbc1e.jpg\" target=\"_blank\" rel=\"noopener\">&#8230;\/image\/gravatar\/w_120,h_80,c_fill\/e3264cf16f34ecd3c7c564f5668cbc1e.jpg<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"margin-left: auto; margin-right: auto;\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/w_120,h_80,c_fill\/e3264cf16f34ecd3c7c564f5668cbc1e.jpg\" alt=\"\" width=\"120\" height=\"80\" \/><\/p>\n<p>If you use one of our client libraries, this is even simpler. For example, the following Ruby on Rails command embeds a 150&#215;150 Gravatar for info@cloudinary.com:<\/p>\n<pre>&lt;%= gravatar_profile_image_tag(\"info@cloudinary.com\", :width =&gt; 150, :height =&gt; 150) %&gt;\n<\/pre>\n<p>Gravatar supports default images. This allows you to always point to a URL of a Gravatar, based on the user\u2019s email, even if no Gravatar is available for the user. Using Gravatar default images can be done with Cloudinary\u2019s default images support as explained below. Simply specify one of the names of the Gravatar default images as the \u2018default_image\u2019 parameter (\u2018d\u2019 in URLs).<\/p>\n<p>The following example displays Gravatar\u2019s \u2018retro\u2019 default image for a given identifier that has no avatar attached:<\/p>\n<p><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/d_retro\/unknown_id.jpg\" target=\"_blank\" rel=\"noopener\">&#8230;\/image\/gravatar\/d_retro\/unknown_id.jpg<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"margin-left: auto; margin-right: auto;\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/d_retro\/unknown_id.jpg\" alt=\"\" width=\"80\" height=\"80\" \/><\/p>\n<p>Gravatar has a cool feature of displaying a different \u2018identicon\u2019 for each user based on the given MD5 hash. The following URLs generate 36&#215;36 thumbnails of two different users, while displaying the \u2018identicon\u2019 avatar if no Gravatar is available:<\/p>\n<p><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/d_identicon,h_36,w_36,c_fill\/a9a1a6dafde8cf0c7e8ee9b177160939.jpg\" target=\"_blank\" rel=\"noopener\">&#8230;\/image\/gravatar\/d_identicon,h_36,w_36,c_fill\/a9a1a6dafde8cf0c7e8ee9b177160939.jpg<\/a><\/p>\n<p><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/d_identicon,g_center,h_36,w_36,c_fill\/e544501b2dd065b385e06a8a8dc7504b.jpg\" target=\"_blank\" rel=\"noopener\">&#8230;\/image\/gravatar\/d_identicon,g_center,h_36,w_36,c_fill\/e544501b2dd065b385e06a8a8dc7504b.jpg<\/a><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/d_identicon,h_36,w_36,c_fill\/a9a1a6dafde8cf0c7e8ee9b177160939.jpg\" alt=\"\" width=\"36\" height=\"36\" \/>\u00a0\u00a0<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/d_identicon,g_center,h_36,w_36,c_fill\/e544501b2dd065b385e06a8a8dc7504b.jpg\" alt=\"\" width=\"36\" height=\"36\" \/><\/p>\n<p style=\"text-align: left;\">\u00a0With Cloudinary, you can also display custom default images you uploaded to Cloudinary. For example, the following URL delivers a Gravatar for the given email and defaults to the uploaded file named \u2018avatar.jpg\u2019:<\/p>\n<p style=\"text-align: left;\"><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/d_avatar.jpg,g_center,h_36,w_36,c_fill\/e544501b2dd065b385e06a8a8dc7504b.jpg\" target=\"_blank\" rel=\"noopener\">&#8230;\/image\/gravatar\/d_avatar.jpg,g_center,h_36,w_36,c_fill\/e544501b2dd065b385e06a8a8dc7504b.jpg<\/a><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/gravatar\/d_avatar.jpg,g_center,h_36,w_36,c_fill\/e544501b2dd065b385e06a8a8dc7504b.jpg\" alt=\"\" width=\"36\" height=\"36\" \/><\/p>\n<p style=\"text-align: left;\">Default images and Gravatar support are available now for all our free &amp; paid plans. For easier integration with your existing web-dev framework, make sure to download our latest <a href=\"https:\/\/github.com\/cloudinary\/cloudinary_gem\" target=\"_blank\" rel=\"noopener\">Ruby<\/a>, <a href=\"https:\/\/github.com\/cloudinary\/pycloudinary\" target=\"_blank\" rel=\"noopener\">Python &amp; Django<\/a>, <a href=\"https:\/\/github.com\/cloudinary\/cloudinary_php\" target=\"_blank\" rel=\"noopener\">PHP<\/a>, <a href=\"https:\/\/github.com\/cloudinary\/cloudinary_js\" target=\"_blank\" rel=\"noopener\">jQuery<\/a>\u00a0or the community contributed <a href=\"https:\/\/metacpan.org\/module\/Cloudinary\" target=\"_blank\" rel=\"noopener\">Perl<\/a>\u00a0or <a href=\"https:\/\/github.com\/thomasvm\/cloudinary-dotnet\" target=\"_blank\" rel=\"noopener\">.Net<\/a> libraries.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Most web sites enrich their graphics by embedding pictures and photos of their model entities &#8211; users, articles, movies, etc. The graphic design of such web sites assumes that all these entities have associated pictures, otherwise the result will not look as satisfactory as intended. The graphics designer will not like it and the developer [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":23382,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[165],"class_list":["post-21136","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","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>Automatically Deliver Alternative Avatar Placeholder Image<\/title>\n<meta name=\"description\" content=\"Automatically detect when an image is missing and deliver the alternative gravatar placeholder image through a fast CDN instead.\" \/>\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\/placeholder_images_and_gravatar_integration_with_cloudinary\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Placeholder Images and Gravatar Integration With Cloudinary\" \/>\n<meta property=\"og:description\" content=\"Automatically detect when an image is missing and deliver the alternative gravatar placeholder image through a fast CDN instead.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2012-05-30T08:59:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-08T22:48:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1647045700\/48_img_placeholders\/48_img_placeholders-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=\"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\/placeholder_images_and_gravatar_integration_with_cloudinary#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Placeholder Images and Gravatar Integration With Cloudinary\",\"datePublished\":\"2012-05-30T08:59:11+00:00\",\"dateModified\":\"2025-03-08T22:48:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary\"},\"wordCount\":993,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1647045700\/48_img_placeholders\/48_img_placeholders.jpg?_i=AA\",\"keywords\":[\"Image Transformation\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2012\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary\",\"url\":\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary\",\"name\":\"Automatically Deliver Alternative Avatar Placeholder Image\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1647045700\/48_img_placeholders\/48_img_placeholders.jpg?_i=AA\",\"datePublished\":\"2012-05-30T08:59:11+00:00\",\"dateModified\":\"2025-03-08T22:48:20+00:00\",\"description\":\"Automatically detect when an image is missing and deliver the alternative gravatar placeholder image through a fast CDN instead.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1647045700\/48_img_placeholders\/48_img_placeholders.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1647045700\/48_img_placeholders\/48_img_placeholders.jpg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Placeholder Images and Gravatar Integration With Cloudinary\"}]},{\"@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":"Automatically Deliver Alternative Avatar Placeholder Image","description":"Automatically detect when an image is missing and deliver the alternative gravatar placeholder image through a fast CDN instead.","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\/placeholder_images_and_gravatar_integration_with_cloudinary","og_locale":"en_US","og_type":"article","og_title":"Placeholder Images and Gravatar Integration With Cloudinary","og_description":"Automatically detect when an image is missing and deliver the alternative gravatar placeholder image through a fast CDN instead.","og_url":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary","og_site_name":"Cloudinary Blog","article_published_time":"2012-05-30T08:59:11+00:00","article_modified_time":"2025-03-08T22:48:20+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1647045700\/48_img_placeholders\/48_img_placeholders-jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary"},"author":{"name":"","@id":""},"headline":"Placeholder Images and Gravatar Integration With Cloudinary","datePublished":"2012-05-30T08:59:11+00:00","dateModified":"2025-03-08T22:48:20+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary"},"wordCount":993,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1647045700\/48_img_placeholders\/48_img_placeholders.jpg?_i=AA","keywords":["Image Transformation"],"inLanguage":"en-US","copyrightYear":"2012","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary","url":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary","name":"Automatically Deliver Alternative Avatar Placeholder Image","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1647045700\/48_img_placeholders\/48_img_placeholders.jpg?_i=AA","datePublished":"2012-05-30T08:59:11+00:00","dateModified":"2025-03-08T22:48:20+00:00","description":"Automatically detect when an image is missing and deliver the alternative gravatar placeholder image through a fast CDN instead.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1647045700\/48_img_placeholders\/48_img_placeholders.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1647045700\/48_img_placeholders\/48_img_placeholders.jpg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/placeholder_images_and_gravatar_integration_with_cloudinary#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Placeholder Images and Gravatar Integration With Cloudinary"}]},{"@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\/v1647045700\/48_img_placeholders\/48_img_placeholders.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21136","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=21136"}],"version-history":[{"count":6,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21136\/revisions"}],"predecessor-version":[{"id":37159,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21136\/revisions\/37159"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/23382"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}