<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.atalasoft.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>David Cilley's AJAX Imaging Blog : Thumbnails</title><link>http://www.atalasoft.com/cs/blogs/davidcilley/archive/tags/Thumbnails/default.aspx</link><description>Tags: Thumbnails</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Using YUI Animation to slide AJAX thumbnails in and out</title><link>http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx</link><pubDate>Mon, 03 Mar 2008 16:58:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13377</guid><dc:creator>David Cilley</dc:creator><slash:comments>0</slash:comments><comments>http://www.atalasoft.com/cs/blogs/davidcilley/comments/13377.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/davidcilley/commentrss.aspx?PostID=13377</wfw:commentRss><description>&lt;P&gt;One of the easiest usability improvements that can be made to an imaging application, is the ability to hide the thumbnails from view when they are no longer needed.&amp;nbsp; Most users would prefer to see as much of the image, and as little of the application&amp;nbsp;on the screen as possible.&lt;/P&gt;
&lt;P&gt;Using &lt;A class="" href="http://developer.yahoo.com/yui/animation/"&gt;YUI's&amp;nbsp;Animation Utility&lt;/A&gt;, you can accomplish this task, while adding a little more feedback that something is happening.&lt;/P&gt;
&lt;P&gt;The thumbnails and the main viewer are placed in separate table cells, so that&amp;nbsp;the whole table can be fit to the width of the browser (a common requirement for imaging apps).&amp;nbsp;&amp;nbsp;The object that will be used for the animation, is a div tag (slideAnim in this case)&amp;nbsp;that holds the thumbnails, and clips the content if it's too large.&amp;nbsp;Keep in mind that height and width must be defined on all objects up the tree, if percentage based values need to be used.&lt;/P&gt;
&lt;P&gt;Here's how I did it:&lt;/P&gt;
&lt;P&gt;&amp;lt;!-- YUI Dependencies --&amp;gt;&lt;BR&gt;&amp;lt;script type="text/javascript" src="&lt;A href="http://yui.yahooapis.com/2.5.0/build/yahoo-dom-event/yahoo-dom-event.js%22%3E%3C/script"&gt;http://yui.yahooapis.com/2.5.0/build/yahoo-dom-event/yahoo-dom-event.js"&amp;gt;&amp;lt;/script&lt;/A&gt;&amp;gt;&lt;BR&gt;&amp;lt;script type="text/javascript" src="&lt;A href="http://yui.yahooapis.com/2.5.0/build/animation/animation-min.js%22%3E%3C/script"&gt;http://yui.yahooapis.com/2.5.0/build/animation/animation-min.js"&amp;gt;&amp;lt;/script&lt;/A&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;table style="width:100%;height:630px;"&amp;gt;&lt;BR&gt;&amp;lt;tr&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;td valign="top"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="slideAnim" style="overflow:hidden; width:202px; height:630px;"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cc1:webthumbnailviewer id="WebThumbnailViewer1" runat="server" width="200px" height="600px" viewerid="WebImageViewer1" thumbsize="160, 120"&amp;gt;&amp;lt;/cc1:webthumbnailviewer&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;td style="width:100%;" valign="top"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cc1:webimageviewer id="WebImageViewer1" runat="server" height="600px" width="100%" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;BR&gt;&amp;lt;/tr&amp;gt;&lt;BR&gt;&amp;lt;/table&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;lt;button id="demo-run" onclick="return false;"&amp;gt;SlideIn/Out&amp;lt;/button&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;script type="text/javascript"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; var _vis = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp; var _outAttributes = {&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: { to: 0 }&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var _inAttributes = {&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: { to: 202 }&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// create animation objects&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var _animOut = new YAHOO.util.Anim('slideAnim', _outAttributes, 1, YAHOO.util.Easing.easeOut);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var _animIn = new YAHOO.util.Anim('slideAnim', _inAttributes, 1, YAHOO.util.Easing.easeIn);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// bind events&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;YAHOO.util.Event.on('demo-run', 'click', slide);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;_animOut.onComplete.subscribe(onSlideOut);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;_animIn.onComplete.subscribe(onSlideIn);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;function onSlideOut(){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _vis = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;function onSlideIn(){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _vis = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; function slide(){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_vis){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slideOut();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slideIn();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;function slideOut(){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _animOut.animate();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;function slideIn(){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _animIn.animate();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;lt;/script&amp;gt; &lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx&amp;amp;;subject=Using+YUI+Animation+to+slide+AJAX+thumbnails+in+and+out" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx&amp;amp;;title=Using+YUI+Animation+to+slide+AJAX+thumbnails+in+and+out" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx&amp;amp;title=Using+YUI+Animation+to+slide+AJAX+thumbnails+in+and+out" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx&amp;amp;;title=Using+YUI+Animation+to+slide+AJAX+thumbnails+in+and+out" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx&amp;amp;;title=Using+YUI+Animation+to+slide+AJAX+thumbnails+in+and+out&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2008/03/03/using-yui-animation-to-slide-ajax-thumbnails-in-and-out.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13377" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/davidcilley/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://www.atalasoft.com/cs/blogs/davidcilley/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://www.atalasoft.com/cs/blogs/davidcilley/archive/tags/Thumbnails/default.aspx">Thumbnails</category><category domain="http://www.atalasoft.com/cs/blogs/davidcilley/archive/tags/Animation/default.aspx">Animation</category><category domain="http://www.atalasoft.com/cs/blogs/davidcilley/archive/tags/YUI/default.aspx">YUI</category></item><item><title>AJAX Thumbnails and On Demand Tiling Unleashed!</title><link>http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx</link><pubDate>Thu, 03 Aug 2006 15:11:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:10608</guid><dc:creator>David Cilley</dc:creator><slash:comments>0</slash:comments><comments>http://www.atalasoft.com/cs/blogs/davidcilley/comments/10608.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/davidcilley/commentrss.aspx?PostID=10608</wfw:commentRss><description>&lt;P&gt;It's been a while since I last spoke about anything on this blog... the main reason for this is we've been hard at work getting the DotImage 4.0 release out.&amp;nbsp; Now that it's out, I'd like to show you the two coolest additions to the our AJAX WebControls. We've added a new AJAX thumbnail control, and we've completely redeveloped the WebImageViewer control.&lt;/P&gt;
&lt;P&gt;After many requests for live scrolling and panning,&amp;nbsp;our original control would use a delayed on demand scroll (where only the part of the image visible was updated when the control was finished scrolling), we can now scroll the image like you would in windows.&amp;nbsp;&amp;nbsp;It splits the image up into tiles, and it loads the tiles when they are scrolled to (OnDemand).&amp;nbsp; This technology was also used in our new thumbnail control, for the same load on demand thumbnailing.&amp;nbsp; The end result is really slick.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.atalasoft.com/ajaxviewer/" target=_blank&gt;&lt;IMG height=182 src="http://www.atalasoft.com/products/dotimage/thinclient/ajaxdemo_th.png" width=200 align=right border=0&gt;&lt;/A&gt;We currently have two demos active and public on the Atalasoft web site.&amp;nbsp; The first one that I'm going to show you is a slick combination of the two controls in action.&amp;nbsp; The &lt;A href="http://www.atalasoft.com/ajaxviewer/" target=_blank&gt;AJAX Multipage Tiff Demo&lt;/A&gt; uses code snippets that I've blogged about in the past, and takes advantage of the PNG transparency fix I spoke of in my last post. Here are links to those blog posts if you're interested:&lt;BR&gt;&lt;BR&gt;&lt;A href="http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/03/21/9805.aspx"&gt;Paging Through Multipage Tiffs using RemoteInvoke&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/05/10/10028.aspx"&gt;PNG Transparency in Internet Explorer Revisited&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;This demo shows how you can open multipage tiff images over the web, save changes, export them to pdf, switch pages, zoom, pan, crop, redact, deskew, despeckle, remove noise, rotate, and fit the image to the viewer all without posting back.&amp;nbsp; It also adds a little extra&amp;nbsp;UI feedback to make the user experience better.&amp;nbsp; This can all be done using &lt;A href="http://www.atalasoft.com/products/dotimage/documentimaging/" target=_blank&gt;DotImage Document Imaging v4.0&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.atalasoft.com/products/dotimage/demos/ajaxphotoviewer/" target=_blank&gt;&lt;IMG height=167 src="http://www.atalasoft.com/Images/screenshots/webcontrols_demo.jpg" width=200 align=right border=0&gt;&lt;/A&gt;The next demo I'll be going over is our multi-control demo converted to our latest version.&amp;nbsp; The &lt;A href="http://www.atalasoft.com/products/dotimage/demos/ajaxphotoviewer/" target=_blank&gt;AJAX Photo Viewer Demo&lt;/A&gt; shows how you can use two of these WebImageViewer controls together for live scrolling and panning, and it also demonstrates many of our commands, all done using our AJAX method of RemoteInvoking.&amp;nbsp; Try dragging the preview selection rectangle around, it'll update your scroll position while your dragging it.&lt;BR&gt;&lt;BR&gt;In this demo, you can upload images, zoom, fit the image, pan, crop, blur, unsharp mask, emboss, change threshold, pixelate, flip, rotate, add a drop shadow, change the color depth, and even draw rectangles, circles, text, and overlay images with transparency.&amp;nbsp; This also takes advantage eliminating full page postbacks.&lt;/P&gt;
&lt;P&gt;Please let me know if you would like to see any other demos using these two controls in more specific scenarios.&amp;nbsp; I'd be happy to make a few more if time permits, thanks! :)&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx&amp;amp;;subject=AJAX+Thumbnails+and+On+Demand+Tiling+Unleashed!" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx&amp;amp;;title=AJAX+Thumbnails+and+On+Demand+Tiling+Unleashed!" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx&amp;amp;title=AJAX+Thumbnails+and+On+Demand+Tiling+Unleashed!" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx&amp;amp;;title=AJAX+Thumbnails+and+On+Demand+Tiling+Unleashed!" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx&amp;amp;;title=AJAX+Thumbnails+and+On+Demand+Tiling+Unleashed!&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/davidcilley/archive/2006/08/03/ajax-thumbnails-and-on-demand-tiling-unleashed.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=10608" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/davidcilley/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://www.atalasoft.com/cs/blogs/davidcilley/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://www.atalasoft.com/cs/blogs/davidcilley/archive/tags/Thumbnails/default.aspx">Thumbnails</category><category domain="http://www.atalasoft.com/cs/blogs/davidcilley/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item></channel></rss>