<?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; JPEGEncoder</title>
	<atom:link href="http://mariusht.com/blog/tag/jpegencoder/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>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>

