<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mariush T. - Flex Developer, Blogger &#187; ByteArray</title>
	<atom:link href="http://mariusht.com/blog/tag/bytearray/feed/" rel="self" type="application/rss+xml" />
	<link>http://mariusht.com/blog</link>
	<description>A blog about Flex Development.</description>
	<lastBuildDate>Tue, 11 Oct 2011 08:56:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Resumable File Downloader &#8211; Simple AIR app</title>
		<link>http://mariusht.com/blog/2010/03/10/resumable-file-downloader-simple-air-app/</link>
		<comments>http://mariusht.com/blog/2010/03/10/resumable-file-downloader-simple-air-app/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 23:59:28 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[ByteArray]]></category>
		<category><![CDATA[FileStream]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[URLRequest]]></category>
		<category><![CDATA[URLRequestHeader]]></category>
		<category><![CDATA[URLStream]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1884</guid>
		<description><![CDATA[
This AIR application demonstrates how to download, pause and resume downloads of larger files(mp3, flv, etc) and save to the user&#8217;s computer. Big Thanks to Benjamin Dobler for his blog post Resumable Downloads with AIR.


Sample Files:
ResumableDownloader.air (AIR, 524 KB)
]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://mariusht.com/files/blog/resumable_downloader/resumableDownloader.jpg" class="alignnone" width="656" height="319" /></p>
<p>This AIR application demonstrates how to download, pause and resume downloads of larger files(mp3, flv, etc) and save to the user&#8217;s computer. Big Thanks to <a href="http://richapps.de/">Benjamin Dobler</a> for his blog post <a href="http://richapps.de/?p=113">Resumable Downloads with AIR</a>.</p>
<div style="float: right; margin: 5px 0 15px 5px;">
<input class="btn" type="button" value="View Source" onClick="window.open('http://mariusht.com/files/blog/resumable_downloader/ResumableDownloader.mxml.html')"/></div>
<p><strong>Sample Files:</strong><br />
<a href="http://mariusht.com/files/blog/resumable_downloader/ResumableDownloader.air">ResumableDownloader.air</a> <span style="color: #808080;">(AIR, 524 KB)</span></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2010/03/10/resumable-file-downloader-simple-air-app/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Downloading and Saving Images to the desktop with AIR</title>
		<link>http://mariusht.com/blog/2009/04/15/downloading-and-saving-images-to-the-desktop-with-air/</link>
		<comments>http://mariusht.com/blog/2009/04/15/downloading-and-saving-images-to-the-desktop-with-air/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 00:18:17 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ByteArray]]></category>
		<category><![CDATA[FileReference]]></category>
		<category><![CDATA[FileStream]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[JPEGEncoder]]></category>
		<category><![CDATA[PNGEncoder]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=146</guid>
		<description><![CDATA[
In this example i want to show you how to download remote image(jpg or png) and save it to the desktop.

Load remote file. We use Loader Class and listen for complete event. We call load method and pass URLRequest parameter.
private function loadRemoteImage(url:String):void
{
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://mariusht.com/files/blog/download_save_image/photo.jpg" alt="" width="669" height="407" /></p>
<p>In this example i want to show you how to download remote image(jpg or png) and save it to the desktop.</p>
<p><span id="more-146"></span></p>
<p><img class="alignleft" src="http://mariusht.com/files/blog/download_save_image/1step.jpg" alt="" width="25" height="25" /><strong>Load remote file.</strong> We use Loader Class and listen for complete event. We call load method and pass URLRequest parameter.</p>
<pre class="MXML"><span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">loadRemoteImage</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">url</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">String</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
<span class="ActionScriptBracket/Brace">{</span>
    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">loader</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Loader</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Loader</span><span class="ActionScriptBracket/Brace">()</span>;
    <span class="ActionScriptDefault_Text">loader</span>.<span class="ActionScriptDefault_Text">contentLoaderInfo</span>.<span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">Event</span>.<span class="ActionScriptDefault_Text">COMPLETE</span>, <span class="ActionScriptDefault_Text">completeHandler</span><span class="ActionScriptBracket/Brace">)</span>;
    <span class="ActionScriptDefault_Text">loader</span>.<span class="ActionScriptDefault_Text">load</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">URLRequest</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">url</span><span class="ActionScriptBracket/Brace">))</span>;
<span class="ActionScriptBracket/Brace">}</span></pre>
<p><img class="alignleft" src="http://mariusht.com/files/blog/download_save_image/2step.jpg" alt="" width="25" height="25" /><strong>Create a BitmapData object. </strong>We can access BitmapData object through Bitmap object. In our example Bitmap object is the same as loaderInfo.content.</p>
<p><strong>FOR DEMO PURPOSES ONLY</strong>: Image (&lt;mx:Image id=&#8221;img&#8221;/&gt;) component shows downloaded image.</p>
<pre class="MXML"><span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">completeHandler</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Event</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
<span class="ActionScriptBracket/Brace">{</span>
    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">loaderInfo</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">LoaderInfo</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">event</span>.<span class="ActionScriptDefault_Text">target</span> <span class="ActionScriptReserved">as</span> <span class="ActionScriptDefault_Text">LoaderInfo</span>;
    <span class="ActionScriptDefault_Text">img</span>.<span class="ActionScriptDefault_Text">source</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">loaderInfo</span>.<span class="ActionScriptDefault_Text">content</span>;
    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">bitmap</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Bitmap</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">loaderInfo</span>.<span class="ActionScriptDefault_Text">content</span> <span class="ActionScriptReserved">as</span> <span class="ActionScriptDefault_Text">Bitmap</span>;
    <span class="ActionScriptDefault_Text">_bitmapData</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bitmap</span>.<span class="ActionScriptDefault_Text">bitmapData</span>;
<span class="ActionScriptBracket/Brace">}</span></pre>
<p><img class="alignleft" src="http://mariusht.com/files/blog/download_save_image/3step.jpg" alt="" width="25" height="42" /><strong>Encode image to JPEG or PNG. </strong>Before saving image, we have to take the current BitmapData object and encode to the ByteArray object. This ByteArray object needs to be encoded in the proper format and for this we can use the JPEGEncoder and PNGEncoder. </p>
<pre class="MXML"><span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">saveImage</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
<span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptvar">    var</span> <span class="ActionScriptDefault_Text">imgByteArray</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">ByteArray</span>;
<span class="ActionScriptvar">    var</span> <span class="ActionScriptDefault_Text">extension</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">String</span>;
<span class="ActionScriptReserved">    if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">textInput</span>.<span class="ActionScriptDefault_Text">text</span>.<span class="ActionScriptDefault_Text">toLowerCase</span><span class="ActionScriptBracket/Brace">()</span>.<span class="ActionScriptDefault_Text">indexOf</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">'.jpg'</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptOperator">-</span>1<span class="ActionScriptBracket/Brace">)</span>
<span class="ActionScriptBracket/Brace">    {</span>
<span class="ActionScriptComment">        // encode to JPEG
</span>        <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">jpegEncoder</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">JPEGEncoder</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">JPEGEncoder</span><span class="ActionScriptBracket/Brace">(</span>80<span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptDefault_Text">        imgByteArray</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">jpegEncoder</span>.<span class="ActionScriptDefault_Text">encode</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_bitmapData</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptDefault_Text">        extension</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptString">'.jpg'</span>;
<span class="ActionScriptBracket/Brace">    }</span>
<span class="ActionScriptReserved">    else</span> <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">textInput</span>.<span class="ActionScriptDefault_Text">text</span>.<span class="ActionScriptDefault_Text">toLowerCase</span><span class="ActionScriptBracket/Brace">()</span>.<span class="ActionScriptDefault_Text">indexOf</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">'.png'</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptOperator">-</span>1<span class="ActionScriptBracket/Brace">)</span>
<span class="ActionScriptBracket/Brace">    {</span>
<span class="ActionScriptComment">        // encode to PNG
</span>        <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">pngEncoder</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">PNGEncoder</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">PNGEncoder</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptDefault_Text">        imgByteArray</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">pngEncoder</span>.<span class="ActionScriptDefault_Text">encode</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_bitmapData</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptDefault_Text">        extension</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptString">'.png'</span>;
<span class="ActionScriptBracket/Brace">    }</span>
<span class="ActionScriptReserved">    else</span>
<span class="ActionScriptReserved">        return</span>;

<span class="ActionScriptvar">    ...</span></pre>
<p><img class="alignleft" src="http://mariusht.com/files/blog/download_save_image/4step.jpg" alt="" width="25" height="25" /><strong>Save file to the desktop</strong>. Now that we already have the encoded ByteArray, we just need to save it to a local file. We do this using the File and FileStream classes.</p>
<pre class="MXML"><span class="ActionScriptvar">     ...</span>
<span class="ActionScriptvar">     var</span> <span class="ActionScriptDefault_Text">file</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">File</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">File</span>.<span class="ActionScriptDefault_Text">desktopDirectory</span>.<span class="ActionScriptDefault_Text">resolvePath</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">'test'</span><span class="ActionScriptOperator">+</span><span class="ActionScriptDefault_Text">extension</span><span class="ActionScriptBracket/Brace">)</span>;
     <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">fileStream</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">FileStream</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">FileStream</span><span class="ActionScriptBracket/Brace">()</span>;
     <span class="ActionScriptDefault_Text">fileStream</span>.<span class="ActionScriptDefault_Text">open</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">file</span>, <span class="ActionScriptDefault_Text">FileMode</span>.<span class="ActionScriptDefault_Text">WRITE</span><span class="ActionScriptBracket/Brace">)</span>;
     <span class="ActionScriptDefault_Text">fileStream</span>.<span class="ActionScriptDefault_Text">writeBytes</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">imgByteArray</span><span class="ActionScriptBracket/Brace">)</span>;
     <span class="ActionScriptDefault_Text">fileStream</span>.<span class="ActionScriptDefault_Text">close</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptBracket/Brace">}</span></pre>
<p><a href="http://mariusht.com/files/blog/download_save_image/srcview/index.html" target="_blank">View Full Source Code</a><br />
<a href="http://www.jdoqocy.com/click-3456007-10589132" target="_top"><br />
<img src="http://www.tqlkg.com/image-3456007-10589132" border="0" alt="Flash CS4 Professional" width="669" height="82" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/04/15/downloading-and-saving-images-to-the-desktop-with-air/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

