<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss version="2.0">
  <channel>
    <title>Cloudinary Blog</title>
    <link>http://cloudinary.com/blog</link>
    <description>Cloudinary is a SaaS that takes the hassle out of managing your websites images.</description>
    <language>en-us</language>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CloudinaryBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="cloudinaryblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <title>Automatic cloud-based image improvements and effects</title>
      <description>
        <![CDATA[<div>
<img style="float: left; margin-left: 5px; margin-right: 5px;" src="http://demo-res.cloudinary.com/image/upload/w_0.5/magic_wand_yt3gic.jpg" alt="" width="173" height="173">Do you like to show your photos exactly as they were taken or do you usually tweak them a little to get that extra punch? What about applying artistic filters before sharing them with your friends and family? </div>
<div> </div>
<div>Just a few years ago, almost all photos were displayed and shared as-is. Image manipulations and improvements were left to the Photoshop experts. Then came the more user-friendly desktop apps, like <strong>Picasa</strong>, that allowed any user to easily improve their photos. A single click on the "I'm feeling lucky" button would instantly make a photo pop, and if the result wasn't satisfactory, you could have always played with the intuitive image adjustment controls.</div>
<div> </div>
<div>With the rising adoption of smartphone based cameras, we experienced an explosion of photo taking &amp; sharing mobile apps such as <strong>Instagram</strong>. With a single touch, users can now enhance the colors of their photos, apply artistic filter effects that match their taste and mood, and add fancy looking frames. The photos such users share with the world are eye-catching, and with the right personal touch - look very professional. </div>
<div> </div>
<div>Even if you prefer your photos to be as realistic as possible and perfectly match the captured scenes, you'll probably agree that the more amateur photographers amongst us can greatly benefit from gentle photo retouches, colors and lighting fixes. After all, people neglect to pay attention to their camera’s white balance settings, and not all cameras can perform equally well on different lighting situations.</div>
<div> </div>
<div>In the comfort of your own home, you can manually retouch your images one by one. But how does this scale to your website or mobile app? When you have many visitors uploading their photos to your online service, how can you retouch these automatically?</div>
<div> </div>
<div>In this blog post we wanted to introduce <strong>Cloudinary's image improvement filters and effects</strong>. With these new capabilities, you can now embed better looking images in your websites and mobile apps with ease. You can even mix and match multiple improvement filters together to create cool, "artistic" results.</div>
<div> </div>
<h3>A fully automated image improvement filter </h3>
<div>Take a look at left-most image below. This image was uploaded to Cloudinary, and doesn't look optimal. Applying Cloudinary's new cloud-based '<span style="color: #bb0000;"><strong>improve</strong></span>' effect (<span style="color: #000000;"><strong>e_improve</strong></span> for URLs) will make it look much better, don't you think?</div>
<div> </div>
<div style="text-align: center;"><strong><a href="http://res.cloudinary.com/demo/image/upload/w_200,e_improve/orly.jpg" target="_blank">http://res.cloudinary.com/demo/image/upload/w_200,<span style="color: #bb0000;">e_improve</span>/orly.jpg</a></strong></div>
<div> </div>
                    <img src="http://res.cloudinary.com/demo/image/upload/w_200/orly.jpg" alt="" width="200" height="301">     <img src="http://res.cloudinary.com/demo/image/upload/w_200,e_improve/orly.jpg" alt="" width="200" height="301"><div> </div>
<div>     </div>
<div>The following Ruby on Rails code generates a transformation URL with the same '<span style="color: #000000;"><strong>improve</strong></span>' effect:</div>
<div class="CodeRay">
  <div class="code"><pre><span style="background-color:hsla(0,0%,0%,0.07);color:black"><span style="font-weight:bold;color:#666">&lt;%=</span> cl_image_tag(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">orly.jpg</span><span style="color:#710">"</span></span>, <span style="color:#A60">:crop</span> =&gt; <span style="color:#A60">:scale</span>, <span style="color:#A60">:width</span> =&gt; <span style="color:#00D">200</span>, <span style="color:#A60">:effect</span> =&gt; <span style="color:#A60">:improve</span>) <span style="font-weight:bold;color:#666">%&gt;</span></span></pre></div>
</div>

<div>Here's another example of the powerful impact of the '<strong>improve</strong>' effect:</div>
<div> </div>
<div style="text-align: center;"><strong><a href="http://res.cloudinary.com/demo/image/upload/w_300,e_improve/gray_mountain.jpg" target="_blank">http://res.cloudinary.com/demo/image/upload/w_300,<span style="color: #bb0000;">e_improve</span>/gray_mountain.jpg</a></strong></div>
<div> </div>
<div>
<img src="http://res.cloudinary.com/demo/image/upload/w_300/gray_mountain.jpg" alt="" width="300" height="201">     <img src="http://res.cloudinary.com/demo/image/upload/w_300,e_improve/gray_mountain.jpg" alt="" width="300" height="201">
</div>
<div> </div>
<div> </div>
<div>You can simply set the '<span style="color: #000000;"><strong>effect</strong></span>' parameter to '<span style="color: #000000;"><strong>improve</strong></span>' and most images and thumbnails on your website would automatically look much better. Here's a PHP code for reaching the same result.</div>
<div class="CodeRay">
  <div class="code"><pre><span style="font-weight:bold;color:#666">&lt;?php</span> <span style="color:#369;font-weight:bold">echo</span> cl_image_tag(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">gray_mountain.jpg</span><span style="color:#710">"</span></span>,
     <span style="color:#369;font-weight:bold">array</span>(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">width</span><span style="color:#710">"</span></span> =&gt; <span style="color:#00D">300</span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">crop</span><span style="color:#710">"</span></span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">scale</span><span style="color:#710">"</span></span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">effect</span><span style="color:#710">"</span></span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">improve</span><span style="color:#710">"</span></span>)); <span style="font-weight:bold;color:#666">?&gt;</span></pre></div>
</div>

<div> </div>
<h3>Automatic color, brightness and contrast balancing</h3>
<div>The 'improve' effect gives you a powerful improvement filter. Occasionally though, you may want to fine-tune your image tweaking. To do that, Cloudinary offers granular filters you can use individually or combined, to create customized effects.</div>
<div> </div>
<div>Automatic contrast balancing is available by setting the '<span style="color: #000000;"><strong>effect</strong></span>' parameter to '<span style="color: #bb0000;"><strong>auto_contrast</strong></span>' (or <span style="color: #000000;"><strong>e_auto_contrast</strong></span> for URLs). The following example shows the uploaded image before and after contrast balancing.</div>
<div> </div>
<div style="text-align: center;"><strong><a href="http://res.cloudinary.com/demo/image/upload/w_300/e_auto_contrast/turtles.jpg" target="_blank">http://res.cloudinary.com/demo/image/upload/w_300,<span style="color: #bb0000;">e_auto_contrast</span>/turtles.jpg</a></strong></div>
<div> </div>
<div>
<img src="http://res.cloudinary.com/demo/image/upload/w_300/turtles.jpg" alt="" width="300" height="201">     <img src="http://res.cloudinary.com/demo/image/upload/w_300/e_auto_contrast/turtles.jpg" alt="" width="300" height="201">
</div>
<div> </div>
<div>Two additional effects are automatic color balancing and brightness balancing. You can apply them by setting the '<span style="color: #000000;"><strong>effect</strong></span>' parameter to '<span style="color: #bb0000;"><strong>auto_color</strong></span>' or '<span style="color: #bb0000;"><strong>auto_brightness</strong></span>' (<span style="color: #000000;"><strong>e_auto_color</strong></span> or <span style="color: #000000;"><strong>e_auto_brightness</strong></span> for URLs).</div>
<div> </div>
<div>The following example shows the impact of applying both 'auto_color' and 'auto_brightness' on an uploaded image:</div>
<div> </div>
<div style="text-align: center;"><strong><a href="http://res.cloudinary.com/demo/image/upload/w_300/e_auto_color/e_auto_brightness/nice_beach.jpg" target="_blank">.../image/upload/<span style="color: #bb0000;">e_auto_color</span>/<span style="color: #bb0000;">e_auto_brightness</span>/nice_beach.jpg</a></strong></div>
<div> </div>
<div>
<img src="http://res.cloudinary.com/demo/image/upload/w_300/nice_beach.jpg" alt="">     <img src="http://res.cloudinary.com/demo/image/upload/w_300/e_auto_color/e_auto_brightness/nice_beach.jpg" alt="" width="300" height="201">
</div>
<div>Same example in Django:</div>
<div class="CodeRay">
  <div class="code"><pre>cloudinary.CloudinaryImage(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">nice_beach.jpg</span><span style="color:#710">"</span></span>).image(transformation =<span style="color:#F00;background-color:#FAA"> </span>
<span style="color:#F00;background-color:#FAA"> </span> [<span style="color:#369;font-weight:bold">dict</span>(width=<span style="color:#00D">300</span>, crop=<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">scale</span><span style="color:#710">"</span></span>), <span style="color:#369;font-weight:bold">dict</span>(effect=<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">auto_color</span><span style="color:#710">"</span></span>), 
   <span style="color:#369;font-weight:bold">dict</span>(effect=<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">auto_brightness</span><span style="color:#710">"</span></span>)])</pre></div>
</div>

<div> </div>
<h3>Fill light strengthening<span style="font-size: 14px;"> </span>
</h3>
<div>Brightness level adjustment is very useful to fix dark images. However, on certain scenarios, you might encounter images that have both bright and dark sections. In this case simply increasing the brightness might overexpose the brighter areas of the image.</div>
<div> </div>
<div>The new fill-light effect can be used to fix this exact scenario. The following example increases the fill light by setting the '<strong>effect</strong>' parameter to '<span style="color: #bb0000;"><strong>fill_light</strong></span>' (<strong>e_fill_light</strong> for URLs).</div>
<div> </div>
<div style="text-align: center;"><strong><a href="http://res.cloudinary.com/demo/image/upload/w_300,e_fill_light/street.jpg" target="_blank">.../image/upload/w_300,<span style="color: #bb0000;">e_fill_light</span>/street.jpg</a></strong></div>
<div> </div>
<div>
<img src="http://res.cloudinary.com/demo/image/upload/w_300/street.jpg" alt="" width="300" height="201">     <img src="http://res.cloudinary.com/demo/image/upload/w_300,e_fill_light/street.jpg" alt="" width="300" height="201">
</div>
<div>   </div>
<div>Same example in .NET:</div>
<div class="CodeRay">
  <div class="code"><pre>cloudinary.Api.UrlImgUp.Transform(
  new CloudinaryDotNet.Transformation().Width(300).Crop("scale").Effect("fill_light")).
    BuildImageTag("street.jpg");</pre></div>
</div>

<h3>"Artistic" filters<span style="font-size: 14px;"> </span>
</h3>
<div>Cloudinary's set of automatic image improvement filters, together with its <a href="http://cloudinary.com/blog/cloud_based_api_for_applying_effects_on_images">custom filters and effects</a>, allows you to easily generate 'cool' chained effects that should match your taste and graphic requirements.</div>
<div> </div>
<div>The following example applies multiple transformations to reach a unique, custom filter. It applies the auto improve effect, increases sharpness level, reduces the red levels and increases the blues. It also increases brightness, adds a gradient fade effect, rounds the image’s corners and adds a wide border. All done via a simple URL. Isn't that cool?</div>
<div> </div>
<div><strong><a href="http://res.cloudinary.com/demo/image/upload/w_200,e_improve/e_sharpen/e_red:-20/e_blue:80/e_brightness:30/e_gradient_fade/bo_5px_solid_rgb:505672,r_30/orly.jpg" target="_blank">.../image/upload/e_improve/e_sharpen/e_red:-20/e_blue:80/e_brightness:30/e_gradient_fade/bo_5px_solid_rgb:505672,r_30/orly.jpg</a></strong></div>
<div> </div>
<div>                   <img style="margin-top: 5px; margin-bottom: 5px;" src="http://res.cloudinary.com/demo/image/upload/w_200/orly.jpg" alt="" width="200" height="301">     <img src="http://res.cloudinary.com/demo/image/upload/w_200,e_improve/e_sharpen/e_red:-20/e_blue:80/e_brightness:30/e_gradient_fade/bo_5px_solid_rgb:505672,r_30/orly.jpg" alt="" width="210" height="311">
</div>
<div>   </div>
<div>If you don't want to embed such long URLs in your website, you can always define a <strong>named transformation</strong> instead. For example, we defined a transformation named 'sample_artistic' that applies all the above effects. Simply add t_simple_artitistic your code and all images will be automatically modified accordingly. Here's a much shorter URL that generates the same result:</div>
<div> </div>
<div style="text-align: center;"><strong><a href="http://res.cloudinary.com/demo/image/upload/w_200/t_sample_artistic/orly.jpg" target="_blank">.../demo/image/upload/<span style="color: #bb0000;">t_sample_artistic</span>/orly.jpg</a></strong></div>
<div> </div>
<div>You can also use Cloudinary's <a href="http://cloudinary.com/blog/adding_watermarks_credits_badges_and_text_overlays_to_images">overlays</a>, underlays, <a href="http://cloudinary.com/blog/image_opacity_manipulation_and_dynamic_watermark_generation">opacity changes</a> and text layers to dynamically and automatically create cool results, like the one below, for any uploaded image:</div>
<div> </div>
<div> </div>
<a href="http://res.cloudinary.com/demo/image/upload/e_improve/e_saturation:-30/o_50,w_186/u_old_frame,w_0.45/u_old_frame.png,w_0.45,a_10/u_old_frame.png,w_0.45,a_30/l_text:bold_dark:Paris%20-%20Fall%201951,o_45,g_south,y_38,w_0.65/orly.jpg" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/demo/image/upload/e_improve/e_saturation:-30/o_50,w_186/u_old_frame,w_0.45/u_old_frame.png,w_0.45,a_10/u_old_frame.png,w_0.45,a_30/l_text:bold_dark:Paris%20-%20Fall%201951,o_45,g_south,y_38,w_0.65/orly.jpg" alt="" width="341" height="377"></a>
<div> </div>
<div> </div>
<h3>Summary<span style="font-size: 14px;"> </span>
</h3>
<div>Do you work on a site or app that allows you or your users to upload images? Using Cloudinary and a tiny transformation URL change, you can have your site's images look much more vibrant and professional and make your visitors happier.</div>
<div> </div>
<div>You can always use Cloudinary's face detection based cropping to focus on the relevant parts of the photo. Now you can also improve your images, make them look more vivid and balanced. With Cloudinary you can also easily change your mind and modify the default filters being applied. With just one more change to your URLs and all your images will be dynamically recreated for you with the updated filters, delivered optimized through a fast CDN.</div>
<div> </div>
<div>If you don't have a Cloudinary account yet, you can <a href="https://cloudinary.com/users/register/free"><strong>sign up now for free</strong></a>.</div>]]>
      </description>
      <author>Nadav Soferman</author>
      <pubDate>Wed, 12 Jun 2013 13:18:07 +0000</pubDate>
      <link>http://cloudinary.com/blog/automatic_cloud_based_image_improvements_and_effects</link>
      <guid>http://cloudinary.com/blog/automatic_cloud_based_image_improvements_and_effects</guid>
    </item>
    <item>
      <title>How to manage images in a fashion website</title>
      <description>
        <![CDATA[<div>
<img style="float: left; margin: 5px;" src="http://res.cloudinary.com/cloudinary/image/upload/w_0.5/v1370349181/fashion_post.jpg" alt="" width="178" height="178">Fashion outlets have evolved dramatically in the last decade. In the past, if you wanted to be on top of the latest fashion trends, you had to subscribe to all the latest magazines and every month wait for the mailman to drop them off. If you wanted to remember a certain outfit or designer, you could either dog ear the page ('bookmark') or cut out the model or design and literally pin it to your cork board.</div>
<div> </div>
<div>Today, it's a whole new ball (game). After all, who would've thought that pinning things would become a term meant for virtual pinboards and the good old cork type would be long gone? </div>
<div> </div>
<h3>Modern fashion websites (and apps)</h3>
<div>Fashion is no longer just about glossy magazines, it's about websites, apps and virtual stores. These fashion sites are incredibly image rich and media packed. No longer will the common visitor be satisfied with one image per article. They now expect an image from every angle, the option to change colors, to see it on a model and on the rack, to turn it around 360 degrees and don't get me started on designing your own one-of-a-kind article. Every fashion website now also needs all these images adapted not only to your regular desktop computer, but also to smartphones and handheld devices and to look wonderful in each! Not stretched, not tiny, just right. </div>
<div> </div>
<div>These new demands from the fashion consumers require a better image infrastructure. The website developers now need more than just a CMS, and being able to support their images becomes a real issue now. Every image needs to be uploaded, normalized, retouched, watermarked, cropped to many different sizes and aspect ratios, fit all viewing devices at all angles, it's exhausting! These images also need to be optimized and available to users all over the world, quickly. After all, you don’t want your viewers to waste valuable time waiting for all these images to load.</div>
<div> </div>
<div>That ends up being quite a headache for the developer, and this is where Cloudinary comes in. </div>
<div> </div>
<div> <img src="http://res.cloudinary.com/cloudinary/image/upload/v1370345285/fashion_obaz_nrfulr.jpg" alt="" width="306" height="283">  <img src="http://res.cloudinary.com/cloudinary/image/upload/v1370345286/fashion_stylight_htoyrb.jpg" alt="" width="306" height="283">
</div>
<h3>Image management done right</h3>
<div>Whenever images are involved, Cloudinary can dramatically cut the development and IT time and save all the headaches. </div>
<div> </div>
<div>With Cloudinary you can easily upload images to the cloud. Automatically perform smart image <strong>resizing, cropping (including face detection based cropping), merging, overlay, watermark, apply effects, rotations, format conversions, without installing any complex software</strong>. Using Cloudinary you can now upload a single high resolution image and ask Cloudinary to automatically scale it down according to the medium used.</div>
<div> </div>
<div>
<div>Consider for example the following sample dress images. These thumbnails were automatically generated by Cloudinary:</div>
</div>
<div> </div>
<div>
<div style="float: left;">
<a href="http://res.cloudinary.com/demo/image/upload/w_100/dress.jpg" target="_blank"><img style="margin-left: 1px; margin-right: 1px; margin-bottom: 6px;" src="http://res.cloudinary.com/demo/image/upload/w_100/dress.jpg" alt="" width="100" height="106"></a>
<div style="text-align: center; font-size: 10px; color: #999;">w_100</div>
</div>
<div style="float: left;">
<a href="http://res.cloudinary.com/demo/image/upload/w_50,h_50,c_fill/dress.jpg" target="_blank"><img style="margin-left: 1px; margin-right: 1px; margin-bottom: 62px;" src="http://res.cloudinary.com/demo/image/upload/w_50,h_50,c_fill/dress.jpg" alt="" width="50" height="50"></a>
<div style="text-align: center; font-size: 10px; color: #999;">w_50,h_50,c_fill</div>
</div>
<div style="float: left;">
<a href="http://res.cloudinary.com/demo/image/upload/w_100,e_hue:40/dress.jpg" target="_blank"><img style="margin-left: 1px; margin-right: 1px; margin-bottom: 6px;" src="http://res.cloudinary.com/demo/image/upload/w_100,e_hue:40/dress.jpg" alt="" width="100" height="106"></a>
<div style="text-align: center; font-size: 10px; color: #999;">e_hue:40</div>
</div>
<div style="float: left;">
<a href="http://res.cloudinary.com/demo/image/upload/w_100,e_hue:100/e_brightness:30/dress.jpg" target="_blank"><img style="margin-left: 1px; margin-right: 1px; margin-bottom: 6px;" src="http://res.cloudinary.com/demo/image/upload/w_100,e_hue:100/e_brightness:30/dress.jpg" alt="" width="100" height="106"></a>
<div style="text-align: center; font-size: 10px; color: #999;">e_hue:100,e_brightness:30</div>
</div>
<div style="float: left;">
<a href="http://res.cloudinary.com/demo/image/upload/e_hue:20,a_20/w_100/dress.jpg" target="_blank"><img style="margin-left: 1px; margin-right: 1px; margin-bottom: 9px;" src="http://res.cloudinary.com/demo/image/upload/e_hue:20,a_20/w_100/dress.jpg" alt="" width="100" height="103"></a>
<div style="text-align: center; font-size: 10px; color: #999;">a_20,e_hue:20</div>
</div>
<div style="float: left;">
<a href="http://res.cloudinary.com/demo/image/upload/w_100/l_cloudinary_icon,w_40,o_35,e_brightness:200,g_north_west,x_25,y_55/dress.jpg" target="_blank"><img style="margin-left: 1px; margin-right: 1px; margin-bottom: 6px;" src="http://res.cloudinary.com/demo/image/upload/w_100/l_cloudinary_icon,w_40,o_35,e_brightness:200,g_north_west,x_25,y_55/dress.jpg" alt="" width="100" height="106"></a>
<div style="text-align: center; font-size: 10px; color: #999;">Watermark overlay</div>
</div>
</div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div>All your images are then seamlessly delivered through a fast CDN, optimized and using industry best practices. Cloudinary offers comprehensive APIs and administration capabilities and is easy to integrate with new and existing web and mobile applications. </div>
<div> </div>
<h3>How might a fashion website benefit from Cloudinary?<span style="font-size: 14px;"> </span>
</h3>
<div>Take a classic photo laden fashion site. All the product photos need to be high end. By uploading these photos directly to Cloudinary, they are not only safely stored and backed up in the cloud, they are also ready to be transformed on the fly and placed seamlessly on the website exactly as the graphics designer intended.</div>
<div> </div>
<div>Did the graphics designer envision a thumbnail of different aspect ratio than the original image? Just tell Cloudinary to crop it to the required aspect ratio. It's as simple as changing your image's URL. Want your brand's watermarked on all your photos? Cloudinary will easily add it for you.</div>
<div> </div>
<div>What about the mobile version of your website? Cloudinary can resize all your images and reduce their quality just a notch so that your mobile users will get the best viewing experience possible and won’t waste precious bandwidth and time when browsing your online site. Same goes for your native apps, and this all happens on-the-fly.</div>
<div> </div>
<div>Modern fashion sites offer a more social experience. Do you allow your users to upload and share their own images? These photos are uploaded in all sorts of types, different formats and sizes. Cloudinary will normalize all these images for you - same type, same dimensions, same effects. Cloudinary can even fetch your user's profile images from Facebook and Twitter. </div>
<div> </div>
<div>Now you can spend your time on your core proposition and avoid image-related headaches.</div>
<div> </div>
<h3>Who uses Cloudinary in the fashion world?</h3>
<div>Below are a two examples of companies in the fashion vertical that use Cloudinary's expertise to create the best user experience possible: </div>
<div> </div>
<div> </div>
<div><a href="http://www.stylight.com/" target="_blank"><img src="http://res.cloudinary.com/cloudinary/image/upload/sdjyojyxquwcmaqtg9df.png" alt="" width="148" height="25"></a></div>
<div> </div>
<div>
<a href="http://www.stylight.com/" target="_blank"><strong>Stylight</strong></a> allows users to create their own mood boards with their own outfit photos, favourite songs, videos and items from a selection of over 500.000 products available on the site. Users can share their mood boards with others in the community and gain inspiration from other users.</div>
<div>Stylight is one of the first fashion communities to have a revenue model that works internationally. Stylight uses Cloudinary to manage all of their images.</div>
<div> </div>
<div><a href="https://www.obaz.com" target="_blank"><img src="http://res.cloudinary.com/cloudinary/image/upload/bqmim0ubbpuatbamniqc.png" alt="" width="115" height="45"></a></div>
<div> </div>
<div>
<a href="https://www.obaz.com" target="_blank"><strong>oBaz</strong></a> (short for online bazaar) is an ecommerce and content platform where brands and bloggers can connect to help people discover new products, trends and sales. </div>
<div>Fashion bloggers use oBaz as a simple platform to write about favorite trends and build a following from an engaged and relevant audience. Brands use oBaz for direct sales while gaining access to shoppers and influential bloggers.</div>
<div>oBaz's media rich website leverages Cloudinary for their image management.  </div>
<div> </div>
<h3>What now?</h3>
<div>So what do you think? Worth a try? Head over to Cloudinary and <a href="https://cloudinary.com/users/register/free">sign up to our free plan</a>. Within minutes you can get going!</div>
<div> </div>
<div>Got other great uses for Cloudnary? We would love to hear your ideas in the comment thread below! </div>
<div> </div>]]>
      </description>
      <author>Orly Bogler</author>
      <pubDate>Tue, 04 Jun 2013 12:52:08 +0000</pubDate>
      <link>http://cloudinary.com/blog/how_to_manage_images_in_a_fashion_website</link>
      <guid>http://cloudinary.com/blog/how_to_manage_images_in_a_fashion_website</guid>
    </item>
    <item>
      <title>Webhooks, upload notifications and background image processing</title>
      <description>
        <![CDATA[<div>
<img style="float: left; margin: 0 15px 0 0;" src="http://res.cloudinary.com/cloudinary/image/upload/w_0.6/background_processing_jvhwzy.jpg" alt="" width="186" height="186">Web applications and web APIs are usually programmed to perform requests in a synchronous manner. A common web-based access flow will start with a requester accessing a remote service. The remote service in turn will process the request and quickly return the result. </div>
<div> </div>
<div>But sometimes a web application will need to perform actions asynchronously in the background. </div>
<div> </div>
<div>Consider, for example, a computing intensive web request. Such a request might take a very long time to finish. UI wise, you might not want your users to actively wait so long for this command to finish. Technically, such a long running HTTP request might even time-out completely. </div>
<div> </div>
<div>In this case, you will probably want to employ a different access flow. In this flow, when the requester accesses the remote service, the remote service will return immediately with a 'pending' result. The remote service will then continue to perform the action in the background. Finally, when the remote service is finished, it will notify the requester that the required action was completed. </div>
<div> </div>
<div>The same concepts apply to Cloudinary's image management APIs. </div>
<div> </div>
<div>So far, Cloudinarys APIs were synchronous. For example, if you wanted an image transformed, you would have to wait synchronously until the transformation was finished.</div>
<div> </div>
<div>In this blog post we wanted to introduce Cloudinary's new notifications and background processing capabilities that further extend the image management solution available when using Cloudinary.</div>
<div> </div>
<h3>Webhooks and upload notifications</h3>
<div>Many mobile and web applications upload images and files to Cloudinary. Such uploading can be performed either from these services' backend or directly from their users' browsers or mobile applications. In such cases you might want to make sure your server is notified when an upload is completed. </div>
<div> </div>
<div>You can do that by setting the <span style="color: #bb0000;"><strong>notification_url</strong></span> parameter of Cloudinary's upload API to any valid HTTP (or HTTPS) public URL.</div>
<div> </div>
<div>For example, in PHP:</div>
<div class="CodeRay">
  <div class="code"><pre><span style="color:#963">$result</span> = \<span style="color:#036;font-weight:bold">Cloudinary</span>\<span style="color:#036;font-weight:bold">Uploader</span>::upload(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">sample.jpg</span><span style="color:#710">"</span></span>, 
   <span style="color:#369;font-weight:bold">array</span>(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">notification_url</span><span style="color:#710">"</span></span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">http://mysite/my_notification_endpoint</span><span style="color:#710">"</span></span>));</pre></div>
</div>

<div>When the upload is completed, an HTTP POST request will be sent to the notification URL you provided. The post data will contain all upload result details as returned by our upload API (public ID, URLs, image dimensions, semantic data if requested and more). The request will also contain a signature of the sent data so you can verify the sender.</div>
<div> </div>
<div>Here's a sample POST request with a JSON of the upload result:</div>
<div class="CodeRay">
  <div class="code"><pre>POST /my_notification_endpoint HTTP/1.1
X-Cld-Timestamp: 1368881627
X-Cld-Signature: 29a383e289bc569310a8ca9899019a3167b4909e
Content-Type: application/json

{"public_id":"djhoeaqcynvogt9xzbn9","version":1368881626,"width":864,"height":576,"format":"jpg","resource_type":"image","created_at":"2013-05-18T12:53:46Z","bytes":120253,"type":"upload","url":"http://res.cloudinary.com/1233456ab/image/upload/v1368881626/djhoeaqcynvogt9xzbn9.jpg","secure_url":"https://cloudinary-a.akamaihd.net/1233456ab/image/upload/v1368881626/djhoeaqcynvogt9xzbn9.jpg"}</pre></div>
</div>

<div>By the way, you can use <a href="http://requestb.in/" target="_blank">RequestBin</a> to test notifications received during development.</div>
<div> </div>
<div>The signature is calculated as follows:     </div>
<div class="CodeRay">
  <div class="code"><pre>SHA1-Hex-Digest("{data}{timestamp}{api_secret}")</pre></div>
</div>

<div>Your server application can use this notification to update your model and database regarding the uploaded images or to cleanup unused uploaded files.</div>
<div> </div>
<div>Here's another example in Ruby on Rails for generating a file input field that performs direct uploading from the browser using a jQuery plugin.</div>
<div class="CodeRay">
  <div class="code"><pre><span style="background-color:hsla(0,0%,0%,0.07);color:black"><span style="font-weight:bold;color:#666">&lt;%=</span> cl_image_upload_tag(<span style="color:#A60">:picture</span>, 
      <span style="color:#A60">:notification_url</span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">http://mysite/my_notification_endpoint</span><span style="color:#710">"</span></span>) <span style="font-weight:bold;color:#666">%&gt;</span></span></pre></div>
</div>

<h3>Eager transformations in the background</h3>
<div>By default, when you access Cloudinary delivery URLs, transformed images are generated dynamically if they don't already exist, according to the transformation parameters. You can also use Cloudinary's<a href="http://cloudinary.com/documentation/upload_images#eager_transformations" target="_blank"><strong> eager transformations</strong></a>, in which case multiple transformed versions of an image are created eagerly while uploading so they are ready for fast delivery even for the first download request.</div>
<div> </div>
<div>Sometimes, you might need to create a single time consuming transformation or many eager transformations of an uploaded image. Creating such transformations might take seconds, especially if the original image is very large. In such cases, you probably don't want your user to wait for the process to complete. </div>
<div> </div>
<div>Using Cloudinary's asynchronous eager transformations, you can now define multiple eager transformations while uploading. The upload request will return immediately, the transformations will be performed in the background by Cloudinary and you will get notified (if you want) when the transformations are ready.</div>
<div> </div>
<div>You can enable asynchronous eager transformations by setting the new <span style="color: #bb0000;"><strong>eager_async</strong></span> upload API parameter to <span style="color: #bb0000;"><strong>true</strong></span>. In addition, you can set the optional <span style="color: #bb0000;"><strong>eager_notification_url</strong></span> to receive an HTTP POST request when the transformation generation is completed.</div>
<div> </div>
<div>The following example in Python (or Django) creates multiple transformations eagerly in the background.</div>
<div class="CodeRay">
  <div class="code"><pre>cloudinary.uploader.upload(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">sample.jpg</span><span style="color:#710">"</span></span>, 
   eager=[<span style="color:#369;font-weight:bold">dict</span>(crop=<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">fill</span><span style="color:#710">"</span></span>, width=<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">150</span><span style="color:#710">"</span></span>, height=<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">100</span><span style="color:#710">"</span></span>), 
          <span style="color:#369;font-weight:bold">dict</span>(effect=<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">sepia</span><span style="color:#710">"</span></span>, width=<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">0.5</span><span style="color:#710">"</span></span>, crop=<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">scale</span><span style="color:#710">"</span></span>)], 
   eager_async=<span style="color:#069">True</span>, eager_notification_url=<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">http://mysite/my_notification_endpoint</span><span style="color:#710">"</span></span>)</pre></div>
</div>

<div>Here's an example of how the notification post request might look like:</div>
<div class="CodeRay">
  <div class="code"><pre>POST /my_notification_endpoint HTTP/1.1
X-Cld-Timestamp: 1368883736
X-Cld-Signature: 09ef8c16f6e0ff85f5345d4813973de8f746448d
Content-Type: application/json

{"batch_id":"c0ed79e610f0636d15a1353a0a866933","notification_type":"eager","eager":[{"width":150,"height":100,"url":"http://res.cloudinary.com/1233456ab/image/upload/c_fill,h_100,w_150/v1368883730/noapoaq60varndxnh2or.jpg","secure_url":"https://cloudinary-a.akamaihd.net/1233456ab/image/upload/c_fill,h_100,w_150/v1368883730/noapoaq60varndxnh2or.jpg"},{"width":432,"height":288,"url":"http://res.cloudinary.com/1233456ab/image/upload/c_scale,e_sepia,w_0.5/v1368883730/noapoaq60varndxnh2or.jpg","secure_url":"https://cloudinary-a.akamaihd.net/1233456ab/image/upload/c_scale,e_sepia,w_0.5/v1368883730/noapoaq60varndxnh2or.jpg"}]}</pre></div>
</div>

<h3>
<br>Background sprites, animated GIFs and PDFs handling<span style="font-size: 14px;"> </span>
</h3>
<div>Cloudinary supports <a href="http://cloudinary.com/documentation/sprite_generation" target="_blank"><strong>generating sprites</strong></a>: merging multiple images into a single large image for a more efficient browser loading using a generated dynamic CSS. </div>
<div> </div>
<div>Sometimes you might want to merge tens or even hundreds of images into a single sprite. </div>
<div> </div>
<div>Cloudinary's image manipulation are fast and efficient, but transforming and merging so many images might take more that your API client request can wait. In this case an HTTP request timeout might occur.</div>
<div> </div>
<div>You can now tell Cloudinary to perform such sprite generations in the background by setting the <span style="color: #bb0000;"><strong>async</strong></span> API parameter to <span style="color: #bb0000;"><strong>true</strong></span>. In addition, you can set the <span style="color: #bb0000;"><strong>notification_url</strong></span> parameter for receiving a webhook request when the process is completed (as explained above).</div>
<div> </div>
<div>The following Ruby example requests for a sprite generation to be performed in the background:</div>
<div class="CodeRay">
  <div class="code"><pre><span style="color:#036;font-weight:bold">Cloudinary</span>::<span style="color:#036;font-weight:bold">Uploader</span>.generate_sprite(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">faces</span><span style="color:#710">"</span></span>, <span style="color:#A60">:width</span> =&gt; <span style="color:#00D">150</span>, <span style="color:#A60">:height</span> =&gt; <span style="color:#00D">100</span>, 
   <span style="color:#A60">:crop</span> =&gt; <span style="color:#A60">:fill</span>, <span style="color:#A60">:async</span> =&gt; <span style="color:#069">true</span>, 
   <span style="color:#A60">:notification_url</span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">http://mysite/my_notification_endpoint</span><span style="color:#710">"</span></span>)</pre></div>
</div>

<div class="CodeRay">
  <div class="code"><pre> =&gt; {"status"=&gt;"processing", "batch_id"=&gt;"163a919cde8f9317d6ee0fbfe6375dc4"} </pre></div>
</div>

<div>The API returns immediately with the response below while the later notification will include the final generated sprite details:</div>
<div class="CodeRay">
  <div class="code"><pre>POST /my_notification_endpoint HTTP/1.1
X-Cld-Timestamp: 1368882586
X-Cld-Signature: d91bccba5f1bb38905fc6a9284914e8959fb4a7b
Content-Type: application/json

{"batch_id":"f97c6bf03074d9641f1a9c9b6bcebef7","css_url":"http://res.cloudinary.com/1233456ab/image/sprite/c_fill,h_100,w_150/v1368882583/faces.css","image_url":"http://res.cloudinary.com/1233456ab/image/sprite/c_fill,h_100,w_150/v1368882583/faces.png","secure_css_url":"https://cloudinary-a.akamaihd.net/1233456ab/image/sprite/c_fill,h_100,w_150/v1368882583/faces.css","json_url":"http://res.cloudinary.com/1233456ab/image/sprite/c_fill,h_100,w_150/v1368882583/faces.json","version":1368882583,"image_infos":{"face_center_eer8ss":{"width":150,"height":100,"x":0,"y":0},"face_left_b7ikxf":{"width":150,"height":100,"x":152,"y":0},"face_top_usjwvk":{"width":150,"height":100,"x":0,"y":102},"front_face_cywiib":{"width":150,"height":100,"x":152,"y":102}},"notification_type":"sprite"}</pre></div>
</div>

<div>You can now create an animated GIF or a multi-page PDF document in a similar fashion. </div>
<div> </div>
<div>You can also "explode" a PDF in the background into multiple separated images representing all of its pages. All this is done using Cloudinary's '<span style="color: #bb0000;"><strong>multi</strong></span>' and '<span style="color: #bb0000;"><strong>explode</strong></span>' methods by setting the <span style="color: #bb0000;"><strong>async</strong></span> parameter to <span style="color: #bb0000;"><strong>true</strong></span> and optionally setting a <span style="color: #bb0000;"><strong>notification_url</strong></span>. Here are some examples in Ruby:</div>
<div class="CodeRay">
  <div class="code"><pre><span style="color:#036;font-weight:bold">Cloudinary</span>::<span style="color:#036;font-weight:bold">Uploader</span>.multi(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">faces</span><span style="color:#710">"</span></span>, <span style="color:#A60">:format</span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">gif</span><span style="color:#710">'</span></span>, <span style="color:#A60">:width</span> =&gt; <span style="color:#00D">150</span>, <span style="color:#A60">:height</span> =&gt; <span style="color:#00D">100</span>, 
   <span style="color:#A60">:crop</span> =&gt; <span style="color:#A60">:scale</span>, <span style="color:#A60">:async</span> =&gt; <span style="color:#069">true</span>, 
   <span style="color:#A60">:notification_url</span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">http://mysite/my_notification_endpoint</span><span style="color:#710">"</span></span>)</pre></div>
</div>

<div class="CodeRay">
  <div class="code"><pre><span style="color:#036;font-weight:bold">Cloudinary</span>::<span style="color:#036;font-weight:bold">Uploader</span>.explode(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">multi_page_pdf</span><span style="color:#710">"</span></span>, <span style="color:#A60">:format</span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">png</span><span style="color:#710">'</span></span>, <span style="color:#A60">:width</span> =&gt; <span style="color:#00D">200</span>, 
   <span style="color:#A60">:height</span> =&gt; <span style="color:#00D">300</span>, <span style="color:#A60">:crop</span> =&gt; <span style="color:#A60">:scale</span>, <span style="color:#A60">:page</span> =&gt; <span style="color:#A60">:all</span>, <span style="color:#A60">:async</span> =&gt; <span style="color:#069">true</span>, 
   <span style="color:#A60">:notification_url</span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">http://mysite/my_notification_endpoint</span><span style="color:#710">"</span></span>)</pre></div>
</div>

<h3>Summary<span style="font-size: 14px;"> </span>
</h3>
<div>As always, our goal with Cloudinary is to solve all of your web and mobile app's image management and image manipulation aspects for you and let you focus on your core business logic.</div>
<div> </div>
<div>As a developer, you are probably familiar with the complexities involved in managing background processing and push notifications yourself. We believe that Cloudinary’s new webhooks and the ability to perform computing intensive image manipulations asynchronously in the background will prove as very useful tools in your image management tool-belt.</div>
<div> </div>
<div>We're anxious to hear your feedback about these new features. Make sure you drop us a line in the comment thread below!</div>
<div> </div>]]>
      </description>
      <author>Tal Lev-Ami</author>
      <pubDate>Tue, 21 May 2013 09:06:20 +0000</pubDate>
      <link>http://cloudinary.com/blog/webhooks_upload_notifications_and_background_image_processing</link>
      <guid>http://cloudinary.com/blog/webhooks_upload_notifications_and_background_image_processing</guid>
    </item>
    <item>
      <title>How Mediavine handled image load in a 50M+ page-views Rails site</title>
      <description>
        <![CDATA[<div><img style="float: left; margin-left: 15px; margin-right: 15px; margin-top: 0px; margin-bottom: 0px;" src="http://res.cloudinary.com/cloudinary/image/upload/mediavine_post_t6cgc6.png" alt="" width="210" height="210"></div>
<div> </div>
<div>We are often asked to share our customer stories with the rest of the Cloudinary community. Whether it's for learning about others experiences managing images with Cloudinary, or just to reaffirm Cloudinary's solution - we love to hear your stories and we're happy to share them.</div>
<div> </div>
<div>Today, we wanted to introduce you to <strong>Mediavine</strong> <strong>Inc.</strong>, one of the largest online entertainment networks on the web, and how they utilized Cloudinary to solve their image management needs.</div>
<div> </div>
<div> </div>
<h3>The customer</h3>
<div>
<strong>Mediavine, Inc.</strong> owns and operates some of the web's largest entertainment and lifestyle properties. Mediavine's network of sites include:</div>
<div><strong><br></strong></div>
<div style="float: left;">
<a href="http://www.thehollywoodgossip.com" target="_blank"><strong>The Hollywood Gossip</strong></a>
<div><strong>      <a href="http://www.thehollywoodgossip.com" target="_blank"><img style="margin-top: 15px; margin-bottom: 15px;" src="http://res.cloudinary.com/cloudinary/image/upload/w_100/the_hollywood_gossip_logo_asj4h9.jpg" alt="" width="100" height="100"></a></strong></div>
<div><strong><br></strong></div>
</div>
<div style="float: left;">
<strong>       <a href="http://www.tvfanatic.com" target="_blank">TV Fanatic<br><br></a></strong>
<div><strong>     <a href="http://www.tvfanatic.com" target="_blank"><img src="http://res.cloudinary.com/cloudinary/image/upload/w_100/tv_fanatic_logo_e2eylp.png" alt="" width="100" height="100"></a></strong></div>
</div>
<div style="float: left;">
<strong>        <a href="http://www.moviefanatic.com" target="_blank">Movie Fanatic</a></strong>
<div>         <a href="http://www.moviefanatic.com" target="_blank"><img style="margin-top: 8px; margin-bottom: 8px;" src="http://res.cloudinary.com/cloudinary/image/upload/w_100,c_fill,g_center,h_70/movie_fanatic_logo_idffcg.jpg" alt="" width="100" height="70"></a>
</div>
</div>
<div style="float: left;">
<strong>       <a href="http://www.foodfanatic.com/" target="_blank">Food Fanatic</a></strong><br><div><strong>         <a href="http://www.foodfanatic.com/" target="_blank"><img style="margin-top: 10px; margin-bottom: 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/w_80/food_fanatic_logo_cvy72w.jpg" alt="" width="80" height="80"></a></strong></div>
</div>
<div><strong><br></strong></div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div>Combined, these websites garner a traffic of nearly 50 million page views a month. </div>
<div>As modern media outlets go, Mediavine's websites are incredibly image rich. </div>
<div> </div>
<h3>The challenge</h3>
<div>Mediavine's sites run on a custom <strong>Ruby on Rails</strong> CMS hosted on <strong>Heroku</strong>. Like many other Rails sites, they started off using the <em>Carrierwave</em> and <em>mini_magick</em> gems to handle their image needs. </div>
<div> </div>
<div>However, as their page views and image processing needs grew, <strong>they quickly ran into performance problems</strong>. </div>
<div> </div>
<div>"No matter how much we optimized image uploads - including moving all version processing to background workers - uploading several high resolution files was just not going to be possible through the dyno manifold." Says <strong>Eric Hochberger</strong>, founder and head of development at Mediavine. "We knew we needed to go directly to our image store, S3. <strong>We looked into rolling out our own solutions, such as carrierwave_direct, but they were far too complex</strong> after way too many hours of struggling. And they would still require additional image processing!"</div>
<div> </div>
<div> </div>
<img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/cloudinary/image/upload/movie_fanatic_screenshot_q3q0i8.jpg" alt="" width="524" height="374"><div> </div>
<h3>The solution</h3>
<div>We asked Eric if he could share his experience with Cloudinary: </div>
<div> </div>
<div>"With Cloudinary we got direct upload to the cloud working within minutes. But it didn't just stop there. <strong>Cloudinary solved our timeout issue, while greatly speeding up our uploading process</strong>, thanks to its easy-to-implement javascript upload." Eric said.</div>
<div> </div>
<div>"Cloudinary did more than that though. <strong>It helped us solve problems we had previously never thought were fixable,</strong>" Eric added. "Scaling animated gifs worked perfectly without any of our previous imagemagick glitches. As for face detection we thought only the geniuses at Facebook could possess?  Yeah. We have it now. Full ITPC data?  Just try getting that out of mini_magick. Now we can pull locations out of images."</div>
<div> </div>
<div>What about the integration with Cloudinary? "This all came in ridiculously easy fashion. <strong>Really, when it comes to any headaches with dealing with images, Cloudinary has solved them all</strong>. Its URLs even solve CDN cache busting. Working with Cloudinary's gem and carrierwave implementation has been a programmer's dream."</div>
<div> </div>
<h3>Recommendation</h3>
<div>"<strong>It's rare when you can outsource a problem and save money but somehow Cloudinary managed to do that."</strong> says Eric. "We were able to knock our direct image hosting costs in half from S3/CloudFront, thanks to Cloudinary's generous pricing and optimization. Even better, we were able to significantly reduce Heroku usage, courtesy of seriously reducing worker dynos with outsourcing thumbnail and version generation. Talk about a win-win."</div>
<div> </div>
<div>"Even if you have a 'working' solution," continues Eric, "we promise Cloudinary will do it better. Don't worry if you have to migrate from an existing system. They even come with code to help you do that. We had our hundreds of thousands of images migrated in less than an hour. And thanks to the fact they support carrierwave, we had minimal code changes."</div>
<div> </div>
<div><img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/cloudinary/image/upload/thg_screenshot_r49vkv.jpg" alt="" width="555" height="408"></div>
<div> </div>
<h3>Final words</h3>
<div>We were very impressed by just how fast Mediavine managed to wrap their heads around the Cloudinary service, migrate their images and complete the full integration. </div>
<div> </div>
<div>We are extremely excited to have Mediavine using Cloudinary, and <strong>wanted to thank Eric for taking the time and sharing his experience</strong>.</div>
<div> </div>
<div>Cloudinary users - let us know if you want to share your own unique experience using Cloudinary. We'd love to feature your services here and we're sure that all of Cloudinary's customers will find your insights helpful.</div>
<div> </div>]]>
      </description>
      <author>Itai Lahan</author>
      <pubDate>Wed, 01 May 2013 12:26:48 +0000</pubDate>
      <link>http://cloudinary.com/blog/how_mediavine_handled_image_load_in_a_50m_page_views_rails_site</link>
      <guid>http://cloudinary.com/blog/how_mediavine_handled_image_load_in_a_50m_page_views_rails_site</guid>
    </item>
    <item>
      <title>A story about production systems, Rails, monitoring and off-hour notifications</title>
      <description>
        <![CDATA[<div>
<img style="float: left; margin: 5px 10px 10px 5px;" src="http://res.cloudinary.com/cloudinary/image/upload/w_0.8/system_monitor_yp5myh.jpg" alt="" width="164" height="164">Cloudinary's image management service is used by thousands of world-wide websites and mobile apps. For many of our clients, Cloudinary has become a central, mission-critical component used for managing image uploads, transformations and delivery.</div>
<div> </div>
<div>This is why we've built Cloudinary from the ground up to be a very robust service. We put a lot of emphasis on availability, scalability and support and we take our users' confidence in us extremely seriously.</div>
<div> </div>
<div>So far, we've been quite satisfied with our ability to keep Cloudinary at<strong> an average of &gt; 99.99% uptime</strong>.</div>
<div> </div>
<div>However, on <strong>April 4th</strong>, the Cloudinary service experienced outages for a few hours. We wanted to explain what happened, our conclusions and the steps we've taken to make sure this won’t happen again.</div>
<div> </div>
<h3>The upgrade</h3>
<div>
<img style="float: left; margin: 5px 15px 10px 5px;" src="http://res.cloudinary.com/cloudinary/image/upload/w_0.5/dlkljlg1rzl8yo7th7wfhq.png" alt="" width="43" height="55">Cloudinary's core service is built with <strong>Ruby on Rails</strong>. The service is tested thoroughly and upgrades are handled with uttermost care. This is why we've preferred to stay with <strong>Rails v3.0</strong> for a long time rather than rock the boat with an upgrade to the latest <strong>Rails 3.2</strong>.</div>
<div> </div>
<div>A few weeks ago a security vulnerability was discovered in Rails. As always, we wanted to apply the security fix as soon as possible. However, the Rails team stopped releasing fixes for Rails 3.0. We had to upgrade to v3.2.</div>
<div> </div>
<div>We've upgraded to Rails 3.2 in our lab and modified our code to support it (Rails upgrades tend to be non backward compatible and break code built with previous versions). We've tested our code extensively and verified that our thousands of unit tests passed correctly. We've successfully finished a thorough manual QA of the system in our staging environment. It all went quite smoothly.</div>
<div> </div>
<div>We scheduled the upgrade for April 4th. As usual, we deployed the system gradually to all of our production servers. Deployment went smoothly as well. We performed additional sanity testing after the system was deployed and closely monitored the system during the working day.</div>
<div> </div>
<div>We went to sleep happy and relaxed.</div>
<div> </div>
<h3>The issues</h3>
<div>At about 1am at night things started to shake.</div>
<div> </div>
<div>Apparently, <strong>Rails 3.2</strong> changed the defaults of one simple configuration parameter - <strong>response caching was turned on by default</strong> when certain cache headers are returned.</div>
<div> </div>
<div>As a result, after long hours of service requests, the local application disk for some of our servers became full due to the cached responses. This caused certain requests that required disk space to fail, depending on the exact request and the size of the response.</div>
<div> </div>
<div>Annoyingly enough, the automatic monitoring service that regularly verifies our APIs, was performing a request that required very little disk space and continued to operate regularly. This service is configured to send notifications to our engineering team's mobile phones during the night. <strong>But since no errors were detected, no notification was sent</strong>.</div>
<div> </div>
<div>Fortunately for us, our co-founder's toddler woke him up early in the morning. He naturally (?) checked his inbox, understood that something was very wrong. He quickly cleared the disk space and modified Rails 3.2 cache settings. The system was fully working again.</div>
<div> </div>
<div>It's important to note that during these ~5 hours, <strong>all existing images and transformed images were delivered successfully to users</strong> through our delivery service and tens of thousands of worldwide <strong>CDN</strong> edges (Akamai + CloudFront). Still, part of the upload API calls did fail during this time and we are very sorry for this.</div>
<div> </div>
<h3>Going forward</h3>
<div>Naturally, we've immediately started to improve our outage prevention mechanisms.</div>
<div> </div>
<div>We've added additional disk space tests to our QA list and added abnormal disk usage monitoring to our urgent notification service. We're also adding a wider set of API requests to our automatic service monitoring.</div>
<div> </div>
<div>We've integrated with <a href="http://www.twilio.com/" target="_blank"><strong>Twilio</strong></a> to enhance our off-hour notifications. Specifically, our engineering team will now <strong>receive automatic voice calls to their mobile phones</strong> in addition to our previous notification methods.</div>
<div> </div>
<div>To make sure we keep you in the know during outages, we've pushed up the priority of a public status page. This page will include automatic monitoring details as well as human written notes.</div>
<div> </div>
<h3>Summary &amp; conclusions<span style="font-size: 14px;"> </span>
</h3>
<div>We are happy that Cloudinary had nearly zero availability issues in almost 2 years of operations. On the other hand, no online service is perfect and every service experienced or will experience outages. </div>
<div> </div>
<div>We will continue to enhance our service with additional image-related features. On the same time, we'll continue to work hard on having Cloudinary's uptime as close to 100% as possible.</div>
<div> </div>
<div>Thank you for trusting us with your images!</div>]]>
      </description>
      <author>Nadav Soferman</author>
      <pubDate>Thu, 25 Apr 2013 10:19:53 +0000</pubDate>
      <link>http://cloudinary.com/blog/a_story_about_production_systems_rails_monitoring_and_off_hour_notifications</link>
      <guid>http://cloudinary.com/blog/a_story_about_production_systems_rails_monitoring_and_off_hour_notifications</guid>
    </item>
    <item>
      <title>Windows Azure add-on for cloud-based image management</title>
      <description>
        <![CDATA[<div>
<img style="float: left; margin: 5px 15px 15px 5px;" src="http://res.cloudinary.com/cloudinary/image/upload/w_0.5/qo0dbb36lwvnz8mylvwh_lytbed.jpg" alt="" width="150" height="150">Call us prejudice, but as a hardcore Linux guys, the name <strong>Microsoft</strong> always caused us to flinch a little. That was our initial reaction when we were approached by the <strong>Azure</strong> team. We have been integrating Cloudinary with many PaaS providers to make our platform as accessible as possible, and Azure actually made perfect sense. Still, we were a bit hesitant at first as we never considered Microsoft a leading player in the world of rapid web &amp; mobile development. </div>
<div> </div>
<div>As you may have figured out, we were very impressed by <strong>Microsoft's Windows Azure cloud platform</strong> and the great team behind it. The Windows Azure platform boasts powerful built-in support for modern development frameworks popular among both enterprises and small startup companies. You can deploy your web and mobile applications in Azure's class using <strong>PHP</strong>, <strong>Python</strong> <strong>&amp;</strong> <strong>Django</strong>,<strong> Node.js</strong>, <strong>Java</strong> and of course <strong>.NET</strong>.</div>
<div> </div>
<div> </div>
<div><img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/cloudinary/image/upload/azure_platforms_yykx7q.png" alt="" width="490" height="519"></div>
<div> </div>
<div> </div>
<div><span style="color: #003aa4; font-size: medium;"><strong>With this in mind - we are very excited to announce Cloudinary's add-on for the Windows Azure cloud platform.</strong></span></div>
<div><span style="color: #800000;"> </span></div>
<h3>What does Windows Azure offer?<span style="font-size: 14px;"> </span>
</h3>
<div>Azure is a PaaS that offers cloud-based deployment and hosting for your web-based applications. Azure also offers virtual machines for running your apps, a hosted &amp; managed SQL database, cloud-based storage and more. All of this is smoothly integrated with visual studio and can be managed via a powerful web interface.</div>
<div> </div>
<div>Last but not least, the Windows Azure Store offers plenty of <strong><a href="http://www.windowsazure.com/en-us/store/overview/" target="_blank">add-ons to enhance your applications</a></strong>.</div>
<div> </div>
<h3>What do we get when using Cloudinary as an Azure Add-on?</h3>
<div>Cloudinary's Azure add-on allows you to easily upload your web application images to the cloud. Your images are stored on a safe and highlighly available location with automatic backups and historical revisions.</div>
<div> </div>
<div>Once on Cloudinary, you can manipulate and transform your images in the cloud to match your graphic design: resize, crop, alter shape, apply effects, add watermarks and more without installing any software on your side. All your images are automatically optimized and delivered to your website visitors through a fast, world-wide CDN with advanced content caching.</div>
<div> </div>
<div>Cloudinary is easy to integrate with and offers open-source client integration libraries for your PHP, Python &amp; Django, Node.js, Java and .NET applications.</div>
<div> </div>
<div>You can register to your Cloudinary account from within the Azure portal using just a few clicks. Registration and integration is free and you can upgrade to a paid plan once your application gains traction and requires larger resource quotas.</div>
<div> </div>
<div> </div>
<div>
<img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/cloudinary/image/upload/v1366712351/azure_store_addon_qzrm5f.png" alt="" width="490" height="512"> </div>
<div> </div>
<div>If you want to see how easy to use and how powerful Cloudinary is, check out <a href="http://cloudinary.com/documentation/azure_integration" target="_blank"><strong>this integration guide</strong></a>. </div>
<div> </div>
<div>So whether you are a Microsoft fan or just looking for a great cloud service provider, you should take time to check out <a href="http://www.windowsazure.com/en-us/" target="_blank"><strong>Windows Azure</strong></a>. Once there, if you need a cloud-based solution for image uploading, storage, manipulation, optimization and delivery, make sure you <a href="http://www.windowsazure.com/en-us/store/service/?id=20dfff56-5ca7-43b1-a903-4a8b32e0c9c4" target="_blank"><strong>add Cloudinary to your list of add-ons</strong></a>.</div>
<div> </div>]]>
      </description>
      <author>Nadav Soferman</author>
      <pubDate>Tue, 23 Apr 2013 10:40:59 +0000</pubDate>
      <link>http://cloudinary.com/blog/windows_azure_add_on_for_cloud_based_image_management</link>
      <guid>http://cloudinary.com/blog/windows_azure_add_on_for_cloud_based_image_management</guid>
    </item>
    <item>
      <title>10 Startup companies that manage their images in the cloud - Part 2</title>
      <description>
        <![CDATA[<div>
<img style="float: left; margin-top: 0px; margin-bottom: 0px; margin-left: 10px; margin-right: 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/w_0.5/zcpfjjy6w1wf1pirbnfd.png" alt="" width="190" height="190">As Cloudinary continues to grow, the number of companies using Cloudinary to manage their images grows with us. Each company has its own unique product and utilizes Cloudinary in a different, fascinating way. In this post, we wanted to introduce you to several cool startup companies, and with them, the many different ways that Cloudinary’s services can be used. </div>
<div> </div>
<div>In the spirit of making a tradition out of it, we present Cloudinary's "10 Startup companies that manage their images in the cloud" - Part 2. (<a href="http://cloudinary.com/blog/10_startup_companies_that_manage_their_images_in_the_cloud" target="_blank"><strong>click here for Part 1</strong></a>).</div>
<div> </div>
<div> </div>
<div> </div>
<div>
<a href="http://www.justgomusic.com/" target="_blank"><img style="float: left; margin: 0px 20px 50px 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/c_pad,h_60,w_154/justgomusic_logo_g9udql.png" alt="" width="154" height="60"></a><span style="font-size: medium;"><strong><a href="http://www.justgomusic.com/" target="_blank">JustGo Music</a></strong>  </span>
</div>
<div>JustGo Music is a social music newspaper and content syndication platform launched in the fast growing electronic dance music industry for fans and pros alike. JustGo Music's media rich website leverages Cloudinary for embedding Facebook profile pictures of your favorite artists.</div>
<div> </div>
<div> </div>
<a href="http://www.tintup.com/" target="_blank"><img style="float: left; margin: 0px 20px 50px 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/c_pad,h_60,w_154/tint_logo_udtiva.jpg" alt="" width="154" height="60"></a>
<div><span style="font-size: medium;"><strong><a href="http://www.tintup.com/" target="_blank">Tint</a></strong> </span></div>
<div>Tint helps you build web pages made up of all your social website images, feeds and hashtags. All the images shown in Tintup's widgets are fetched by Cloudinary from every available social network. Cloudinary then optimizes and deliver the images to Tintup's viewers.</div>
<div> </div>
<div> </div>
<div>
<a href="http://www.milkster.com/" target="_blank"><img style="float: left; margin: 0px 20px 50px 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/c_pad,h_47,w_154/milkly_logo_hq50md.png" alt="" width="154" height="47"></a><span style="font-size: medium;"><strong><a href="http://www.milkster.com/" target="_blank">Milkster</a></strong> </span>
</div>
<div>Milkster is a crowd-curated catalog of remarkable lifestyle products from around the world and across the web. Milkster utilizes Cloudinary to upload, manipulate and deliver all of these great images.</div>
<div> </div>
<div> </div>
<div>
<a href="https://www.givey.com/" target="_blank"><img style="float: left; margin: 0px 20px 50px 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/c_pad,h_60,w_154/givey_logo_cp3ega.png" alt="" width="154" height="60"></a><span style="font-size: medium;"><strong><a href="https://www.givey.com/" target="_blank">Givey</a></strong> </span>
</div>
<div>Givey is a Social Donation Platform that makes giving to the causes you care about effortless. </div>
<div>Givey makes sharing, caring and charity in general, easy by connecting people that care about similar causes and allowing to donate to those charities.</div>
<div> </div>
<div> </div>
<div>
<a href="http://apartable.com/" target="_blank"><img style="float: left; margin: 0px 20px 50px 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/c_pad,h_60,w_154/xgtrmgahcpjn7l4zmwqb.png" alt="" width="154" height="60"><span style="font-size: medium;"><strong>Apartable</strong></span></a><span style="font-size: medium;"> </span>
</div>
<div>Apartable provides personalized apartment matching and recommendations to renters, suggesting relevant apartments and giving them all the information they need to make an informed decision. All the apartment images, there to give you a better idea of what you're heading in to, are managed by Cloudinary. </div>
<div> </div>
<div> </div>
<div><a href="http://www.sunnybump.com/" target="_blank"><img style="float: left; margin: 0px 20px 50px 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/c_pad,h_60,w_154/sunnybump_logo_tduhvt.png" alt="" width="154" height="60"><span style="font-size: medium;"><strong>SunnyBump</strong></span></a></div>
<div>SunnyBump helps new parents discover, curate, share, &amp; buy the best baby products on the market today. With the help of parents who've been there before and the industry experts who know, SunnyBump helps find all the baby products around. </div>
<div> </div>
<div> </div>
<div>
<a href="http://www.tunezy.com/" target="_blank"><img style="float: left; margin: 0px 20px 50px 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/c_pad,h_60,w_154/tunezy_logo_lzoloc.png" alt="" width="154" height="60"></a><span style="font-size: medium;"><strong><a href="http://www.tunezy.com/" target="_blank">Tunezy</a></strong> </span>
</div>
<div>Tunezy is a social platform for the recorded music industry, which creates a platform where fans and musicians can build experiences together. Tunezy utilizes Cloudinary to streamline their image management needs. </div>
<div> </div>
<div> </div>
<div>
<a href="http://www.toogethr.com/" target="_blank"><img style="float: left; margin: 0px 20px 50px 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/c_pad,h_60,w_154/toogethr_logo_pdbcgm.png" alt="" width="154" height="60"><span style="font-size: medium;"><strong>Toogethr</strong></span></a><span style="font-size: medium;">  </span>
</div>
<div>Toogethr is an online and mobile transportation service that lets you make best use of social networks. Toogethr's mission is to make mobility affordable, sustainable and social, by optimizing the billions of empty car seats in this world, and building a door-to-door rideshare network.</div>
<div> </div>
<div> </div>
<div>
<a href="http://seeyourimpact.org" target="_blank"><img style="float: left; margin: 0px 20px 50px 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/c_pad,h_60,w_154/seeyourimpact_logo_xdduda.png" alt="" width="154" height="60"><span style="font-size: medium;"><strong>SeeYourImpact</strong></span></a><span style="font-size: medium;">  </span>
</div>
<div>Not a startup per-se, SeeYourImpact is a non-for-profit that offers a revolutionary method to help those in need by a way of gift giving. These gifts will go on to change people's lives. Following the donation, a photo and story is sent over to the gift donor showing his impact on the world. The photo, and all other images on site, are delivered via Cloudinary. </div>
<div> </div>
<div> </div>
<div>
<a href="http://www.roomz.com/" target="_blank"><img style="float: left; margin: 0px 20px 90px 10px;" src="http://res.cloudinary.com/cloudinary/image/upload/c_pad,h_60,w_154/roomz_logo_n5cwxw.png" alt="" width="154" height="60"></a><span style="font-size: medium;"><strong><a href="http://www.roomz.com/" target="_blank">Roomz</a></strong> </span>
</div>
<div>Roomz goal, as its name implies, is to help find the best roommate for you. A roommate that loves your flat, furniture, dog, cat and goldfish. Roomz is a platform to connect people looking to share cold pasta and cheesy 80's movies in a great apartment. Cloudinary is here to deliver all the images involved, so you'll know exactly where you're headed, what bedroom you're going get and how your potential roommate looks like first thing in the morning.</div>
<div> </div>
<div> </div>
<div>As you can imagine, it was difficult to choose only 10 companies, but we tried to keep the fields of interest varied and to show as many different integration methods with Cloudinary. We hope to continue with this tradition, so if you're not on this list and would like to be - <a href="http://cloudinary.com/contact" target="_blank">drop us a line!</a> We would be happy to include you in the next one, and to thank you for using our services of course. </div>
<div> </div>]]>
      </description>
      <author>Orly Bogler</author>
      <pubDate>Wed, 10 Apr 2013 11:13:34 +0000</pubDate>
      <link>http://cloudinary.com/blog/10_startup_companies_that_manage_their_images_in_the_cloud_part_2</link>
      <guid>http://cloudinary.com/blog/10_startup_companies_that_manage_their_images_in_the_cloud_part_2</guid>
    </item>
    <item>
      <title>Automatic image sharpening and blurring in the cloud</title>
      <description>
        <![CDATA[<div>
<img style="float: left; margin: 5px 10px 10px 5px;" src="http://res.cloudinary.com/cloudinary/image/upload/w_0.6/sharpen_blur_jddfvw.jpg" alt="" width="126" height="126">Images. Your web (or mobile) application is probably filled to the brim with images. You might be surprised at just how much impact these images have on your visitors. From their graphical appeal to their size and access times - these images determine your visitors browsing experience and ultimately their conversion to repeating visitors and paying clients.</div>
<div> </div>
<div>Now, while your graphic designer has created a cool graphical concept, many of the images you need to embed inside it are not in your direct control. Social websites contain profile photos uploaded by their users. E-commerce solutions contain many product photos that can't be edited one at a time. Media outlets contain many photographs of different consistency.</div>
<div> </div>
<div>Having a tool in your belt that offers automatic tweaks and retouches for all these images is quite handy. Here a couple of things you can do with Cloudinary that can really improve your website.</div>
<h3>Image sharpening</h3>
<div>How can you make your website "pop"? it's easy if you control the exact content across your web application - a great graphics design can make wonders. But what can we do to improve user uploaded images? </div>
<div> </div>
<div>Let's look look at the following image uploaded to Cloudinary:</div>
<div>  </div>
<div><img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/demo/image/upload/w_0.7/front_face.jpg" alt="" width="204" height="197"></div>
<div> </div>
<div>The photo looks good. But just take a look at what a bit of sharpness can do to it. </div>
<div>You can add sharpness by setting the <span style="color: #003f95;"><strong>effect</strong></span> transformation parameter to <span style="color: #003f95;"><strong>sharpen</strong></span> (or <span style="color: #003f95;"><strong>e_sharpen</strong></span> for URLs):</div>
<div> </div>
<div style="text-align: center;"><a href="http://res.cloudinary.com/demo/image/upload/e_sharpen/front_face.jpg" target="_blank"><strong>.../demo/image/upload/e_sharpen/front_face.jpg</strong></a></div>
<div> </div>
<div><img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/demo/image/upload/w_0.7,e_sharpen/front_face.jpg" alt="" width="204" height="197"></div>
<div> </div>
<div>Here's the same example in Rails:</div>
<div class="CodeRay">
  <div class="code"><pre><span style="background-color:hsla(0,0%,0%,0.07);color:black"><span style="font-weight:bold;color:#666">&lt;%=</span> cl_image_tag(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">front_face.jpg</span><span style="color:#710">"</span></span>, <span style="color:#A60">:effect</span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">sharpen</span><span style="color:#710">"</span></span>) <span style="font-weight:bold;color:#666">%&gt;</span></span></pre></div>
</div>

<div>You can control the strength of the sharpen effect to match your taste. Here's a more intense sharpening of the same image by setting the sharpen level to 300. Quite a nice photographic effect.</div>
<div> </div>
<div style="text-align: center;"><a href="http://res.cloudinary.com/demo/image/upload/e_sharpen:300/front_face.jpg" target="_blank"><strong>.../demo/image/upload/e_sharpen:300/front_face.jpg</strong></a></div>
<div> </div>
<div>
<br><img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/demo/image/upload/w_0.7,e_sharpen:300/front_face.jpg" alt="" width="204" height="197">
</div>
<div> </div>
<div>Same example in PHP:</div>
<div class="CodeRay">
  <div class="code"><pre><span style="font-weight:bold;color:#666">&lt;?php</span> <span style="color:#369;font-weight:bold">echo</span> cl_image_tag(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">front_face.jpg</span><span style="color:#710">"</span></span>, <span style="color:#369;font-weight:bold">array</span>(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">effect</span><span style="color:#710">"</span></span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">sharpen:300</span><span style="color:#710">"</span></span>)) <span style="font-weight:bold;color:#666">?&gt;</span></pre></div>
</div>

<div>Sharpening is also useful in making text elements in thumbnails clearer. For example, the following screenshot was uploaded to Cloudinary. As you can see the small gray text snippets are not so clear here.</div>
<div> </div>
<div>
<img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/demo/image/upload/text_screenshot.jpg" alt="" width="280" height="224"> </div>
<div> </div>
<div> </div>
<div>Sharpening such an screenshot would make the text more readable. The following example sharpened this image. This time using the <span style="color: #003f95;"><strong>unsharp_mask</strong></span> effect that is similar to sharpen but uses a different algorithm. Much more readable:</div>
<div> </div>
<div style="text-align: center;"><a href="http://res.cloudinary.com/demo/image/upload/e_unsharp_mask/text_screenshot.jpg" target="_blank"><strong>.../demo/image/upload/e_unsharp_mask/text_screenshot.jpg</strong></a></div>
<div> </div>
<img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/demo/image/upload/e_unsharp_mask/text_screenshot.jpg" alt="" width="280" height="224"><div> </div>
<div> </div>
<div>Same example in Django:</div>
<div class="CodeRay">
  <div class="code"><pre>img = cloudinary.CloudinaryImage(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">front_face.jpg</span><span style="color:#710">"</span></span>)
img.image(effect=<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">unsharp_mask</span><span style="color:#710">"</span></span>)</pre></div>
</div>

<br><h3>Image blurring</h3>
<div>Image sharpening is useful for improving images and making them "pop". But sometimes you would want to aim for the opposite effect. <strong>Quora</strong>, for example, is using dynamically created blurred snippets of text if you're browsing an answer while being logged out. How can you do that using Cloudinary?</div>
<div> </div>
<div>To blur images, you can use Cloudinary's <span style="color: #003f95;"><strong>blur</strong></span> effect (<span style="color: #003f95;"><strong>e_blur</strong></span> for URLs). Here's an example: </div>
<div> </div>
<div style="text-align: center;"><a href="http://res.cloudinary.com/demo/image/upload/e_blur/front_face.jpg" target="_blank"><strong>.../demo/image/upload/e_blur/front_face.jpg</strong></a></div>
<div> </div>
<div>
<img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/demo/image/upload/w_0.7,e_blur/front_face.jpg" alt="" width="204" height="197"> </div>
<div> </div>
<div>You can also make the blurring more intense by passing a numeric level. The following example applies the blur effect with a <strong>400</strong> intensity on the sample image:</div>
<div> </div>
<div style="text-align: center;"><a href="http://res.cloudinary.com/demo/image/upload/e_blur:400/front_face.jpg" target="_blank"><strong>.../demo/image/upload/e_blur:400/front_face.jpg</strong></a></div>
<div> </div>
<div><img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/demo/image/upload/w_0.7,e_blur:400/front_face.jpg" alt="" width="204" height="197"></div>
<div> </div>
<div>In the following example, we blurred the image intensely and also reduced its opacity. Then we added a <strong>text overlay</strong> that calls users to sign up to your site if they want to view the full content:</div>
<div> </div>
<div><a href="http://res.cloudinary.com/demo/image/upload/e_blur:500,o_50/g_center,l_text:bold_dark:Sign+up+to+see+more/front_face.jpg" target="_blank"><strong>.../demo/image/upload/e_blur:500,o_50/g_center,l_text:bold_dark:Sign+up+to+see+more/front_face.jpg</strong></a></div>
<div> </div>
<div><img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/demo/image/upload/w_0.7,e_blur:500,o_50/g_center,l_text:bold_dark:Sign+up+to+see+more/front_face.jpg" alt="" width="204" height="197"></div>
<div> </div>
<div>Sample example in Rails:</div>
<div class="CodeRay">
  <div class="code"><pre><span style="background-color:hsla(0,0%,0%,0.07);color:black"><span style="font-weight:bold;color:#666">&lt;%=</span> cl_image_tag(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">front_face.jpg</span><span style="color:#710">"</span></span>, 
                 <span style="color:#A60">:overlay</span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">text:bold_dark:Sign up to see more</span><span style="color:#710">"</span></span>,
                 <span style="color:#A60">:gravity</span> =&gt; <span style="color:#A60">:center</span>, <span style="color:#F00;background-color:#FAA"> </span>
                 <span style="color:#A60">:transformation</span> =&gt; {<span style="color:#A60">:effect</span> =&gt; <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">blur:500</span><span style="color:#710">"</span></span>, <span style="color:#A60">:opacity</span> =&gt; <span style="color:#00D">50</span>}) <span style="font-weight:bold;color:#666">%&gt;</span></span></pre></div>
</div>

<div>Sometimes you want to blur only a certain region of an image. You can use the <span style="color: #003f95;"><strong>blur_region</strong></span> effect together with exact coordinates specified by <strong>x,</strong> <strong>y</strong>, <strong>width</strong> and <strong>height</strong> parameters. Here's an example that blurs only part of an uploaded screenshot:</div>
<div> </div>
<div style="text-align: center;"><a href="http://res.cloudinary.com/demo/image/upload/e_blur_region,x_0,y_0.5,w_1.0/front_face.jpg" target="_blank"><strong>.../demo/image/upload/e_blur_region,x_0,y_0.5,w_1.0/front_face.jpg</strong></a></div>
<div> </div>
<div><img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/demo/image/upload/e_blur_region,x_0,y_0.5,w_1.0/w_0.7/front_face.jpg" alt="" width="204" height="197"></div>
<div> </div>
<div>Same example in Node.js:</div>
<div class="CodeRay">
  <div class="code"><pre>cloudinary.image(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">front_face.jpg</span><span style="color:#710">"</span></span>, { <span style="color:#606">effect</span>: <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">blur_region</span><span style="color:#710">"</span></span>, <span style="color:#606">x</span>: <span style="color:#00D">0</span>, <span style="color:#606">y</span>: <span style="color:#60E">0.5</span>, <span style="color:#606">w</span>: <span style="color:#60E">1.0</span> });</pre></div>
</div>

<div>You can also automatically blur all faces detected in an image using Cloudinary's <span style="color: #003f95;"><strong>blur_faces</strong></span>. In the following example the face was automatically detected and blurred using the default level:</div>
<div> </div>
<div style="text-align: center;"><a href="http://res.cloudinary.com/demo/image/upload/e_blur_faces/front_face.jpg" target="_blank"><strong>.../demo/image/upload/e_blur_faces/front_face.jpg</strong></a></div>
<div> </div>
<div><img style="display: block; margin-left: auto; margin-right: auto;" src="http://res.cloudinary.com/demo/image/upload/w_0.7,e_blur_faces/front_face.jpg" alt="" width="204" height="197"></div>
<div> </div>
<div>Same example in .NET:</div>
<div class="CodeRay">
  <div class="code"><pre>string url = cloudinary.Api.UrlImgUp.Transform(
  new CloudinaryDotNet.Transformation().Effect("blur_faces")).BuildUrl("front_face.jpg");</pre></div>
</div>

<h3>
<br>Summary</h3>
<div>Automatic image sharpening and blurring can do wonders to a website. For static assets, you can do that manually using your favorite image manipulation software. With Cloudinary such effects can be automatically applied to millions of user-uploaded images with ease. And if you decide to spruce up the graphical effects in your site's images, you can simply modify the transformation parameters in your development framework of choice. All images will be regenerated on the fly using the updated effect and will be served to your users optimized through a fast CDN.</div>
<div> </div>
<div>It would be great if you try out the new filters and <strong><a href="http://cloudinary.com/contact" target="_blank">tell us when you think</a></strong>. If you don't have a Cloudinary account yet, you can <a href="http://cloudinary.com/users/register/basic" target="_blank"><strong>create one for free</strong></a>.</div>
<div> </div>]]>
      </description>
      <author>Nadav Soferman</author>
      <pubDate>Wed, 20 Mar 2013 10:25:03 +0000</pubDate>
      <link>http://cloudinary.com/blog/automatic_image_sharpening_and_blurring_in_the_cloud</link>
      <guid>http://cloudinary.com/blog/automatic_image_sharpening_and_blurring_in_the_cloud</guid>
    </item>
    <item>
      <title>Cloud-based media library management for Web and mobile applications</title>
      <description>
        <![CDATA[<div>
<img style="float: left; margin: 5px 10px 10px 0;" src="http://res.cloudinary.com/cloudinary/image/upload/w_0.4/media_lib_gallery_z8uaxc.jpg" alt="" width="203" height="176">Can your users upload their own images to your web or mobile application? What about your content partners - do they upload their images directly to your service? </div>
<div> </div>
<div>We frequently hear complaints that as the service owner, you don't get enough visibility into the images uploaded to your service. In this blog post, we wanted to help you change that.</div>
<div> </div>
<div>At Cloudinary, we aim at covering all image-related tasks required when developing websites and mobile applications. Specifically, Cloudinary offers an end-to-end solution to your main image management pipeline - image uploads, storage, manipulation, and delivery. </div>
<div> </div>
<div>In the past year, we've put a lot of emphasis on enhancing Cloudinary's APIs with a thorough set of manipulations, transformations and effects capabilities. Lately, we've been buffing up the online media management capabilities of Cloudinary.</div>
<div> </div>
<h3>Your online media Library<span style="font-size: 1.17em;"> </span>
</h3>
<div>Once images are uploaded to Cloudinary, they are first provided with a safe and secure online storage location. Once there, we tried to offer a better visibility and better manageability to your website’s growing online media library.</div>
<div> </div>
<div>In this blog post we wanted to introduce you to Cloudinary's new cloud-based Media Library and image transformations management UI. Some highlights:</div>
<div>
<ul>
<li>Easily browse through all of your websites images. </li>
<li>View detailed image information.</li>
<li>Manually upload multiple local or remote files.</li>
<li>Assign tags to images and select images to be deleted.</li>
<li>Interactively apply any desired image transformation.</li>
<li>Define powerful cloud-based image transformations and name them for future reuse.</li>
</ul>
<div> </div>
</div>
<h3>Media library browsing<span style="font-size: 1.17em;"> </span>
</h3>
<div>If you ever visited Cloudinary's dashboard, you probably saw the overall statistics views - total number of images, derived images and transformations, storage and bandwidth usage charts, etc.</div>
<div> </div>
<div><img src="http://res.cloudinary.com/cloudinary/image/upload/media_lib_totals_vlburm.jpg" alt="" width="322" height="302"></div>
<div> </div>
<div>Now you can also easily navigate through all of your images, view automatically generated thumbnails, search images by their name (public ID) or assigned tags. </div>
<div> </div>
<img src="http://res.cloudinary.com/cloudinary/image/upload/media_lib_gallery_z8uaxc.jpg" alt="" width="508" height="441"><div> </div>
<h3>Manual image uploading<span style="font-size: 1.17em;"> </span>
</h3>
<div>You can use our new cloud-based media library for manually uploading images. You can drag &amp; drop or select multiple files. </div>
<div> </div>
<div><img src="http://res.cloudinary.com/cloudinary/image/upload/media_lib_upload_jecsag.png" alt="" width="501" height="192"></div>
<div> </div>
<div>Our advanced uploading menu also allows you to define custom public IDs for uploaded images, assign one or more tags for later referencing them by and perform uploading from a remote HTTP URL instead of from your desktop machine.</div>
<div> </div>
<img src="http://res.cloudinary.com/cloudinary/image/upload/media_lib_upload_options_z58p8d.png" alt="" width="452" height="108"><div> </div>
<div> </div>
<div>By the way - this uploading interface was implemented using <a href="http://cloudinary.com/blog/direct_image_uploads_from_the_browser_to_the_cloud_with_jquery" target="_blank">Cloudinary's jQuery plugin</a>.  You too can use our jQuery plugin in your web application to create a great looking image upload form that allows direct uploading from the browser to Cloudinary, support drag &amp; drop, multiple images uploading, progress indications and more.</div>
<div> </div>
<h3>Visual transformation generation</h3>
<div>Clicking on an image will get you to our new visual transformation page. From here, you can interactively apply any desired cloud-based image manipulation supported by Cloudinary: resize, crop, detect faces, round corners, rotate, apply effects, modify opacity, add border, add a watermark and more. An easy to use visual interface lets you generate Cloudinary's CDN-based transformation URLs and see a live preview of the result.</div>
<div> </div>
<div><img src="http://res.cloudinary.com/cloudinary/image/upload/media_lib_trans_e18kdx.png" alt="" width="512" height="384"></div>
<div>  </div>
<h3>Transformation management</h3>
<div>With our new Transformations console, you can browse through all the transformations dynamically generated by your website or mobile application. Click a transformation to view a live sample preview and apply further fine tuning.</div>
<div> </div>
<img src="http://res.cloudinary.com/cloudinary/image/upload/media_lib_trans_list_i8osyv.jpg" alt="" width="514" height="319"><div> </div>
<div> </div>
<div>You can also use the new user interface to apply any advanced transformation options supported by Cloudinary. You can chain multiple transformations together to reach more complex results and add one or more overlays and underlays. After you’ve finished designing the transformation that best matches your graphics design requirements, you can assign it with a short name for easily re-using it in your web and mobile applications.</div>
<div> </div>
<img src="http://res.cloudinary.com/cloudinary/image/upload/media_lib_trans_chained_uefvrz.png" alt="" width="507" height="467"><div> </div>
<h3>Summary</h3>
<div>We are very excited about the new media library and transformation management UI. We hope you like it too and find it a useful tool for easily managing your website’s cloud-based images. </div>
<div> </div>
<div>As always, we have many future plans down the road for our cloud-based media library management - view powerful insights and reports, seamless CMS integration, code sample generation, pre-defined set of useful transformations, and more. Stay tuned for updates.</div>
<div> </div>
<div>As always, we would appreciate any feedback or comment you have regarding the new media library. Try it out and <a href="http://cloudinary.com/contact" target="_blank">tell us what you think</a>? If you don't have a Cloudinary account yet, <a href="https://cloudinary.com/users/register/free" target="_blank">click here</a> to create a free account.</div>]]>
      </description>
      <author>Nadav Soferman</author>
      <pubDate>Tue, 12 Mar 2013 13:54:51 +0000</pubDate>
      <link>http://cloudinary.com/blog/cloud_based_media_library_management_for_web_and_mobile_applications</link>
      <guid>http://cloudinary.com/blog/cloud_based_media_library_management_for_web_and_mobile_applications</guid>
    </item>
    <item>
      <title>Announcing new support portal, knowledge base and community forums</title>
      <description>
        <![CDATA[<div>
<img style="float: left; margin-right: 15px;" src="http://res.cloudinary.com/cloudinary/image/upload/w_0.5/ufchjbpbavxjc47aaucn.jpg" alt="" width="200" height="200">Since its inception, one of Cloudinary's main pillars was to always be there for our customers. Every question you ever asked us helped us better understand what image solutions are most important to you. Every support request helped us find and fix gaps in our product and our documentation. Nearly every feature request we got was immediately given top priority and helped us shape Cloudinary into the service it is today. Without a doubt, we owe much of Cloudinary's success today to the amount of open communication we have going with our community.</div>
<div> </div>
<div>We are extremely excited to see how fast our customer base extends and have decided to make it a priority to upgrade our support infrastructure as soon as possible. In addition to quick response, we wanted to offer a new, simpler ways of extending Cloudinary's combined knowledge base, offering a place where our community can quickly find answers to burning questions, a location where you can share your Cloudinary experience and best practices for the whole community to enjoy.</div>
<div> </div>
<div>Without further ado, <strong>we're happy to announce our newest addition to Cloudinary -</strong> <a href="http://support.cloudinary.com/home" target="_blank"><strong>our new support portal</strong></a>.</div>
<div> </div>
<h3>The Knowledge Base</h3>
<div>While brand new, we hope that our <strong><a href="http://support.cloudinary.com/forums" target="_blank">knowledge base</a></strong> will grow to give answers to many of your most urgent questions. Our knowledge base is detailed and broken down into topics, for easy browsing. There is also a quick search option to simplify the browsing even further. The knowledge base should cover anything from image uploading and transformations, client libraries and how to integrate with them, plans, billing and security to name a few. </div>
<div> </div>
<div>So far, we have done our best to punch in all the questions and answers that we have seen come up often, with easy to use solutions and explanations. These Q&amp;A's always have room for improvement. For each question and answer there is an option to comment, ask a follow up question or clarification. </div>
<div> </div>
<div><img src="http://res.cloudinary.com/cloudinary/image/upload/nxqzwboukbjpgwppbtuo.png" alt="" width="630" height="308"></div>
<div> </div>
<h3>Support Tickets<span style="font-size: 14px;">  </span>
</h3>
<div>If you can't find your answer in our knowledge base, just <strong><a href="http://support.cloudinary.com/anonymous_requests/new" target="_blank">contact our support team</a></strong>. For any technical issues and queries you run into, large or small, we'll do our best to offer a quick advice. </div>
<div> </div>
<div>With our <strong><a href="http://support.cloudinary.com/anonymous_requests/new" target="_blank">new ticketing system</a></strong>, you can insert all the details of your query and have a way to track it. You will be able to know at every moment what its status is, what team member is helping you and more. This will allow closer monitoring and promise faster responses and results.</div>
<div> </div>
<div><img src="http://res.cloudinary.com/cloudinary/image/upload/r60ttskkrveiff5b3f6r.png" alt="" width="634" height="385"></div>
<div> </div>
<h3>Email &amp; Chat Support </h3>
<div>Don't like forms? Just email us at <a href="mailto:support@cloudinary.com" target="_blank"><strong>support@cloudinary.com</strong></a>, it reaches the same ticketing system, only without the dropdown &amp; fill-in form.</div>
<div> </div>
<div>Do you prefer a more personal question &amp; answer session? Just click the small <strong>Contact Us</strong> button at the bottom-right of your cloudinary.com browser window. If we're there, we'll be happy to chat, and if not - just leave a message and we'll get back to you asap.</div>
<div> </div>
<h3>Community Forums<span style="font-size: 14px;">  </span>
</h3>
<div>Do you have a feature request? Cloudinary usage tips &amp; tricks you can share? Best practices and recommendations? Please head to <a href="http://support.cloudinary.com/categories/20092647-Community-Forums" target="_blank"><strong>our community forums</strong></a> and share your Cloudinary thoughts with the rest our community. This way everyone will be able to enjoy your insights!</div>
<div> </div>
<div>Contemplating between different possible usage scenarios? Have burning questions you want to share with other developers like you? In our community forums you can share your thoughts with others just like you.</div>
<div> </div>
<h3>Outside Cloudinary </h3>
<div>Cloudinary's support team is also very active on other technical forums throughout the web. Any Cloudinary related question asked on <a href="http://stackoverflow.com/questions/tagged/cloudinary" target="_blank"><strong>Stack Overflow</strong></a> should get a quick answer, and we constantly monitor <a href="https://github.com/cloudinary" target="_blank"><strong>GitHub</strong></a> requests for anything related to Cloudinary's various open-source client integration libraries. </div>
<div> </div>
<div>Prefer social networking? We are always active on <a href="https://twitter.com/cloudinary" target="_blank"><strong>Twitter</strong></a> and <a href="https://www.facebook.com/Cloudinary" target="_blank"><strong>Facebook</strong></a>, offering support and occasional tips and waiting to hear your feedback close and personal.</div>
<div> </div>
<h3>To Summarize</h3>
<div>We are doing our best to make Cloudinary as simple and as effective to use as we possibly can. In time, we hope that our new support infrastructure will be a place that can both improve your Cloudinary experience and at the same time help us understand what's important to you, allowing us to continue building the best cloud-based image storage, management, manipulation and delivery platform available.</div>
<div> </div>
<div>Let us know what you think - does the knowledge base answers your questions? Do you find our ticketing system easier to work with? Can our community forums offer solid advice? We would love to get your feedback!</div>
<div> </div>]]>
      </description>
      <author>Orly Bogler</author>
      <pubDate>Wed, 20 Feb 2013 13:32:29 +0000</pubDate>
      <link>http://cloudinary.com/blog/announcing_new_support_portal_knowledge_base_and_community_forums</link>
      <guid>http://cloudinary.com/blog/announcing_new_support_portal_knowledge_base_and_community_forums</guid>
    </item>
  </channel>
</rss>
