<?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>Erika Focke</title>
	<atom:link href="http://www.erikafocke.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.erikafocke.com.br</link>
	<description>Sobre todas as coisas</description>
	<lastBuildDate>Tue, 26 Jan 2010 21:05:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Classe php para postar no Twitter com encurtador de URL</title>
		<link>http://www.erikafocke.com.br/php/classe-php-para-postar-no-twitter-com-encurtador-de-url/</link>
		<comments>http://www.erikafocke.com.br/php/classe-php-para-postar-no-twitter-com-encurtador-de-url/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 20:58:12 +0000</pubDate>
		<dc:creator>Erika</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[bitly]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.erikafocke.com.br/?p=116</guid>
		<description><![CDATA[Há algum tempo desenvolvi essa classe para postar no Twitter, e estudando a API do bit.ly fiz algumas alterações na classe para encurtar as urls antes de postá-las. A url que você passar dentro da mensagem será automaticamente encurtada. Ficou bem fácil de usar, espero que ajude alguém.
Não esqueça de mudar o &#8220;twitter_login&#8221; e &#8220;twitter_password&#8221; para [...]]]></description>
			<content:encoded><![CDATA[<p>Há algum tempo desenvolvi essa classe para postar no Twitter, e estudando a API do bit.ly fiz algumas alterações na classe para encurtar as urls antes de postá-las. A url que você passar dentro da mensagem será automaticamente encurtada. Ficou bem fácil de usar, espero que ajude alguém.<br />
Não esqueça de mudar o &#8220;twitter_login&#8221; e &#8220;twitter_password&#8221; para seus dados do twitter, e o &#8220;bitly_login&#8221;  e &#8220;bitly_key&#8221; para seus dados do Bit.ly. Se não possui conta no Bit.ly, acesse esse link para cadastrar-se: <a href="http://bit.ly/account/register?rd=/account/your_api_key" target="_blank">http://bit.ly/account/register?rd=/account/your_api_key</a> . Você poderá acompanhar as estatísticas de cliques e popularidade dos links encurtados por você, é bem legal.</p>
<p>TwitMsg.php</p>
<pre class="brush:php">&lt;?php
class TwitMsg {

	var $msg;

	static $username = "twitter_login";
	static $password = "twitter_password";

	function __construct($msg)
	{
		$this-&gt;msg = utf8_encode($msg);
	}	

	function sendMsg()
	{

		$username = self::$username;
		$password = self::$password;

		$pos = strpos($this-&gt;msg,"http://");

		if ($pos !== false)
		{
			$aux = substr($this-&gt;msg,$pos);
			$split = explode(" ",$aux);
			$theUrl = $split[0];
			$small = $this-&gt;getSmallLink($theUrl);
			$this-&gt;msg= str_replace($theUrl,$small,$this-&gt;msg);
		}
		$message = urlencode($this-&gt;msg);

		$message = substr($message,0,140);
		$url = 'http://twitter.com/statuses/update.xml';

		$curl_handle = curl_init();
		curl_setopt($curl_handle, CURLOPT_URL, "$url");
		curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
		curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($curl_handle, CURLOPT_POST, 1);
		curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
		curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
		$buffer = curl_exec($curl_handle);
		curl_close($curl_handle);

		if (empty($buffer)) {
			return 0;
		} else {
			return 1;
		}

	}

	//bit.ly
	function getSmallLink($longurl)
	{
		$login = "bitly_login";
		$apiKey = "bitly_key";
		$url = "http://api.bit.ly/shorten?version=2.0.1&amp;longUrl=$longurl&amp;login=$login&amp;apiKey=$apiKey&amp;format=json&amp;history=1";
		$result = file_get_contents($url);
		$obj = json_decode($result, true);
		return $obj ["results"] ["$longurl"] ["shortUrl"];
	}

}
?&gt;</pre>
<p>Para usar, é bem fácil:</p>
<pre class="brush:php">&lt;?php
include_once("TwitMsg.php");
$message = "Classe para postar no Twitter com encurtador de URL automático do bit.ly: http://www.erikafocke.com.br/php/classe-php-para-postar-no-twitter-com-encurtador-de-url/ por @erikaheidi";
$t = new TwitMsg($message);
if($t-&gt;sendMsg())
    echo "Mensagem postada com sucesso no twitter.";
else
   echo "Ocorreu um erro. Verifique se o login e senha do twitter estão corretos.";
?&gt;</pre>
<p>Pronto! Ao executar, a mensagem será postada no seu twitter, porém o link será automaticamente encurtado e você poderá acessar as suas estatísticas na sua conta do Bit.ly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.erikafocke.com.br/php/classe-php-para-postar-no-twitter-com-encurtador-de-url/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Função para usar a API do Bit.ly para encurtar urls no PHP</title>
		<link>http://www.erikafocke.com.br/php/funcao-para-usar-a-api-do-bit-ly-para-encurtar-urls-no-php/</link>
		<comments>http://www.erikafocke.com.br/php/funcao-para-usar-a-api-do-bit-ly-para-encurtar-urls-no-php/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 19:27:06 +0000</pubDate>
		<dc:creator>Erika</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[bit.ly]]></category>
		<category><![CDATA[encurtando urls]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.erikafocke.com.br/?p=111</guid>
		<description><![CDATA[Eu nem sabia, mas é super fácil usar a api do Bit.ly para criar urls curtas. Excelente pra integrar com o seu site se você pretende utilizar o Twitter para divulgar links, por exemplo.
Neste exemplo, vamos ver como fazer isso no PHP.
Antes de mais nada, você precisa fazer um cadastro no bit.ly para obter um [...]]]></description>
			<content:encoded><![CDATA[<p>Eu nem sabia, mas é super fácil usar a api do Bit.ly para criar urls curtas. Excelente pra integrar com o seu site se você pretende utilizar o Twitter para divulgar links, por exemplo.<br />
Neste exemplo, vamos ver como fazer isso no PHP.</p>
<p>Antes de mais nada, você precisa fazer um cadastro no bit.ly para obter um login e uma API KEY. Acesse: <a href="http://bit.ly/account/register?rd=/account/your_api_key">http://bit.ly/account/register?rd=/account/your_api_key</a></p>
<p>Agora vamos à função:</p>
<pre class="brush:php">&lt;?php

function getShortUrl($link)
{
    $apiLogin = "seulogin";
    $apiKey = "suaChave";
    $url = "http://api.bit.ly/shorten?version=2.0.1&amp;longUrl=$link&amp;login=$apiLogin&amp;apiKey=$apiKey&amp;format=json&amp;history=1";
    $result = file_get_contents($url);
    $obj = json_decode($result, true);
    return $obj ["results"] ["$longurl"] ["shortUrl"];
}

?&gt;</pre>
<p>Para usar esta função, o seu servidor precisa aceitar a utilização da função &#8220;file_get_contents&#8221; com uma url externa. Caso tenha problemas, verifique a opção &#8220;allow_url_fopen&#8221; no seu php.ini, ela deve estar &#8220;On&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.erikafocke.com.br/php/funcao-para-usar-a-api-do-bit-ly-para-encurtar-urls-no-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aplicando o efeito &#8220;Sepia&#8221; no PHP com a lib GD</title>
		<link>http://www.erikafocke.com.br/php/aplicando-o-efeito-sepia-no-php-com-a-lib-gd/</link>
		<comments>http://www.erikafocke.com.br/php/aplicando-o-efeito-sepia-no-php-com-a-lib-gd/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 18:54:36 +0000</pubDate>
		<dc:creator>Erika</dc:creator>
				<category><![CDATA[GD]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[efeitos]]></category>
		<category><![CDATA[manipulação de imagens]]></category>
		<category><![CDATA[sepia]]></category>

		<guid isPermaLink="false">http://www.erikafocke.com.br/?p=108</guid>
		<description><![CDATA[Não existe uma função pronta para aplicar o efeito &#8220;sépia&#8221; (foto envelhecida) em imagens usando a GD no PHP, porém é bem fácil de conseguir esse efeito fazendo uma combinação de COLORIZE e GRAYSCALE :
&#60;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &#38;&#38; imagefilter($img, IMG_FILTER_GRAYSCALE))
{
        imagefilter($img, IMG_FILTER_COLORIZE, 90, 60, 40);
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
   [...]]]></description>
			<content:encoded><![CDATA[<p>Não existe uma função pronta para aplicar o efeito &#8220;sépia&#8221; (foto envelhecida) em imagens usando a GD no PHP, porém é bem fácil de conseguir esse efeito fazendo uma combinação de COLORIZE e GRAYSCALE :</p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_GRAYSCALE))
{
        imagefilter($img, IMG_FILTER_COLORIZE, 90, 60, 40);
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<p>Resultado &#8211; antes e depois:</p>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/sepia.jpg"><img class="alignnone size-full wp-image-109" title="sepia" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/sepia.jpg" alt="" width="600" height="299" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.erikafocke.com.br/php/aplicando-o-efeito-sepia-no-php-com-a-lib-gd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aplicando efeitos / filtros em imagens com a GD &#8211; Pt 2</title>
		<link>http://www.erikafocke.com.br/php/aplicando-efeitos-filtros-em-imagens-com-a-gd-parte-2/</link>
		<comments>http://www.erikafocke.com.br/php/aplicando-efeitos-filtros-em-imagens-com-a-gd-parte-2/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 18:34:27 +0000</pubDate>
		<dc:creator>Erika</dc:creator>
				<category><![CDATA[GD]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[blur]]></category>
		<category><![CDATA[filtros]]></category>
		<category><![CDATA[manipulação de imagens]]></category>
		<category><![CDATA[negativo]]></category>

		<guid isPermaLink="false">http://www.erikafocke.com.br/?p=93</guid>
		<description><![CDATA[Continuando o post anterior, onde mostrei a aplicação dos filtros GRAYSCALE, BRIGHTNESS, CONTRAST e COLORIZE, vamos ver agora a aplicação dos outros filtros disponíveis na função imagefilter() da GD .
Nos exemplos a seguir você verá do lado esquerdo a imagem original, e do lado direito o resultado após a aplicação do filtro. O código vem [...]]]></description>
			<content:encoded><![CDATA[<p>Continuando o <a href="http://www.erikafocke.com.br/php/aplicando-efeitos-filtros-em-imagens-com-a-gd-parte-1/">post anterior</a>, onde mostrei a aplicação dos filtros GRAYSCALE, BRIGHTNESS, CONTRAST e COLORIZE, vamos ver agora a aplicação dos outros filtros disponíveis na função <em>imagefilter()</em> da GD .</p>
<p>Nos exemplos a seguir você verá do lado esquerdo a imagem original, e do lado direito o resultado após a aplicação do filtro. O código vem logo abaixo.</p>
<p><strong>Negativo</strong></p>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/negativo.jpg"><img class="alignnone size-medium wp-image-94" title="negativo" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/negativo-300x149.jpg" alt="" width="300" height="149" /></a></p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_NEGATE))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<h4>EdgeDetect</h4>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/edgedetect.jpg"><img class="alignnone size-medium wp-image-95" title="edgedetect" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/edgedetect-300x149.jpg" alt="" width="300" height="149" /></a></p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_EDGEDETECT))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<h4>Emboss (alto relevo)</h4>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/emboss.jpg"><img class="alignnone size-medium wp-image-96" title="emboss" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/emboss-300x149.jpg" alt="" width="300" height="149" /></a></p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img,IMG_FILTER_GAUSSIAN_BLUR))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<h4>Gaussian Blur</h4>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/gaussian.jpg"><img class="alignnone size-medium wp-image-97" title="gaussian" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/gaussian-300x149.jpg" alt="" width="300" height="149" /></a></p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_EMBOSS))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<h4>Selective Blur</h4>
<p>O efeito desse blur é mais suave que o Gaussian.</p>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/selectiveblur.jpg"><img class="alignnone size-medium wp-image-98" title="selectiveblur" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/selectiveblur-300x149.jpg" alt="" width="300" height="149" /></a></p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_SELECTIVE_BLUR))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<h4>Mean Removal</h4>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/mean_removal.jpg"><img class="alignnone size-medium wp-image-100" title="mean_removal" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/mean_removal-300x149.jpg" alt="" width="300" height="149" /></a></p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_MEAN_REMOVAL))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<h4>Smooth</h4>
<p>Também funciona como uma espécie de Blur, porém nesse filtro você define a intensidade.  Quanto maior o valor, menor é a intensidade do blur aplicado.</p>
<p>Passando o valor &#8220;0&#8243; :</p>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/smooth_0.jpg"><img class="alignnone size-medium wp-image-101" title="smooth_0" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/smooth_0-300x149.jpg" alt="" width="300" height="149" /></a></p>
<p>Passando o valor &#8220;10&#8243; :</p>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/smooth_10.jpg"><img class="alignnone size-medium wp-image-102" title="smooth_10" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/smooth_10-300x149.jpg" alt="" width="300" height="149" /></a></p>
<p>Passando o valor &#8220;-5&#8243; :</p>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/smooth_-5.jpg"><img class="alignnone size-medium wp-image-103" title="smooth_-5" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/smooth_-5-300x149.jpg" alt="" width="300" height="149" /></a></p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_SMOOTH, 10))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.erikafocke.com.br/php/aplicando-efeitos-filtros-em-imagens-com-a-gd-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aplicando efeitos / filtros em imagens com a GD &#8211; Pt 1</title>
		<link>http://www.erikafocke.com.br/php/aplicando-efeitos-filtros-em-imagens-com-a-gd-parte-1/</link>
		<comments>http://www.erikafocke.com.br/php/aplicando-efeitos-filtros-em-imagens-com-a-gd-parte-1/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 19:00:35 +0000</pubDate>
		<dc:creator>Erika</dc:creator>
				<category><![CDATA[GD]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[brilho]]></category>
		<category><![CDATA[colorize]]></category>
		<category><![CDATA[contraste]]></category>
		<category><![CDATA[filtros]]></category>
		<category><![CDATA[manipulação de imagens]]></category>
		<category><![CDATA[preto e branco]]></category>

		<guid isPermaLink="false">http://www.erikafocke.com.br/?p=78</guid>
		<description><![CDATA[Neste post irei mostrar como podemos aplicar efeitos e filtros em imagens utilizando a lib GD no PHP. Iremos usar basicamente a função &#8220;imagefilter&#8221;, que nos permite aplicar vários efeitos como preto e branco, mexer no brilho e contraste, etc.
Para não deixar o post gigantesco, irei dividí-lo em partes. Nesta primeira parte, teremos os efeitos: [...]]]></description>
			<content:encoded><![CDATA[<p>Neste post irei mostrar como podemos aplicar efeitos e filtros em imagens utilizando a lib GD no PHP. Iremos usar basicamente a função &#8220;imagefilter&#8221;, que nos permite aplicar vários efeitos como preto e branco, mexer no brilho e contraste, etc.</p>
<p>Para não deixar o post gigantesco, irei dividí-lo em partes. Nesta primeira parte, teremos os efeitos: Preto e Branco, Brilho, Contraste e Colorize.</p>
<p>Nos exemplos a seguir você verá do lado esquerdo a imagem original, e do lado direito o resultado após a aplicação do filtro. O código vem logo abaixo.</p>
<h4>1. Preto e Branco</h4>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/pretoebranco.jpg"><img class="size-medium wp-image-80" title="pretoebranco" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/pretoebranco-300x149.jpg" alt="" width="300" height="149" /></a></p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_GRAYSCALE))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<h4>2. Brilho</h4>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/brilho.jpg"><img class="alignnone size-medium wp-image-82" title="brilho" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/brilho-300x149.jpg" alt="" width="300" height="149" /></a></p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_BRIGHTNESS, 40))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<p>Obs. O terceiro argumento aceita um valor positivo (para aumentar o brilho) ou negativo (para diminuir o brilho).</p>
<h4>3. Contraste</h4>
<p>O contraste tem uma pequena diferença em se tratando dos valores, pois para aumentar o contraste passamos um valor negativo, e para diminuir o contraste o valor deve ser positivo. O exemplo abaixo usa o valor &#8220;40&#8243; no filtro IMG_FILTER_CONTRAST :</p>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/contraste_menos.jpg"><img class="alignnone size-medium wp-image-84" title="contraste_menos" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/contraste_menos-300x149.jpg" alt="" width="300" height="149" /></a></p>
<p>Já o exemplo abaixo utiliza o valor &#8221; -40 &#8221; como parâmetro, e aí sim, o contraste é aumentado:</p>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/contraste.jpg"><img class="alignnone size-medium wp-image-85" title="contraste" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/contraste-300x149.jpg" alt="" width="300" height="149" /></a></p>
<p>Vamos ao código:</p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_CONTRAST, -40))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<h4>Filtro de Cor</h4>
<p>Este filtro é bem similar ao &#8220;grayscale&#8221;, sendo que você especifica a cor que deseja aplicar na imagem.  Exemplos abaixo:</p>
<p>Cor usada: #DDA0DD<a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/colorize_01.jpg"><br />
<img class="alignnone size-medium wp-image-87" title="colorize_01" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/colorize_01-300x149.jpg" alt="" width="300" height="149" /></a></p>
<p>Cor usada: #008B8B<br />
<a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/colorize_02.jpg"><img class="alignnone size-medium wp-image-88" title="colorize_02" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/colorize_02-300x149.jpg" alt="" width="300" height="149" /></a></p>
<p>Vamos ao código (a cor deve ser passada em hexa correspondente aos valores RGB)</p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_COLORIZE, 0, 139, 139))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<p>O  filtro &#8220;IMG_FILTER_COLORIZE&#8221; aceita ainda um outro argumento, que corresponde ao canal ALPHA, ou seja, da transparência &#8211; vai de 0 a 127, onde &#8220;0&#8243; é totalmente opaco (não vai fazer diferença) e &#8220;127&#8243; é totalmente transparente (o efeito não vai aparecer, a foto vai ficar como a original). Você pode amenizar o efeito da cor usando esse canal. Exemplo abaixo, com a mesma cor usada anteriormente (verde cyan &#8211; 0,139,139), agora com transparência (90):</p>
<p><a href="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/colorize_03.jpg"><img class="alignnone size-medium wp-image-89" title="colorize_03" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2010/01/colorize_03-300x149.jpg" alt="" width="300" height="149" /></a></p>
<pre class="brush:php">&lt;?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img &amp;&amp; imagefilter($img, IMG_FILTER_COLORIZE, 0, 139, 139,90))
{
	header("Content-type: image/jpg");
	imagejpeg($img);
}
else
{
    echo "Ocorreu um erro.";
}

imagedestroy($img);
?&gt;</pre>
<p>No próximo post continuarei com os outros filtros.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.erikafocke.com.br/php/aplicando-efeitos-filtros-em-imagens-com-a-gd-parte-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Criando thumbnails / miniaturas no PHP com a GD</title>
		<link>http://www.erikafocke.com.br/php/criando-thumbnails-miniaturas-no-php-com-a-gd/</link>
		<comments>http://www.erikafocke.com.br/php/criando-thumbnails-miniaturas-no-php-com-a-gd/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 17:07:12 +0000</pubDate>
		<dc:creator>Erika</dc:creator>
				<category><![CDATA[GD]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[manipulação de imagens]]></category>
		<category><![CDATA[miniaturas]]></category>
		<category><![CDATA[thumbnails]]></category>

		<guid isPermaLink="false">http://www.erikafocke.com.br/?p=71</guid>
		<description><![CDATA[Vamos então começar com o básico, que é utilizar a GD para criar thumbnails (miniaturas) de fotos.
Para isso, precisaremos criar uma função que calcule o tamanho proporcional da miniatura, de acordo com uma dada largura e altura máximas. Então, vamos à função:
function criaMiniatura($imagem,$destination,$larguraMax,$alturaMax)
{
  $tamanho = getimagesize($imagem);
  $largura = $tamanho[0];
  $altura = $tamanho[1]
 [...]]]></description>
			<content:encoded><![CDATA[<p>Vamos então começar com o básico, que é utilizar a GD para criar thumbnails (miniaturas) de fotos.</p>
<p>Para isso, precisaremos criar uma função que calcule o tamanho proporcional da miniatura, de acordo com uma dada largura e altura máximas. Então, vamos à função:</p>
<pre class="brush:php">function criaMiniatura($imagem,$destination,$larguraMax,$alturaMax)
{
  $tamanho = getimagesize($imagem);
  $largura = $tamanho[0];
  $altura = $tamanho[1]
  //agora vamos ao calculo da proporcao
  if($largura &gt; $larguraMax)
  {
    $largura = $larguraMax;
    $altura = ($largura * $tamanho[1]) / $tamanho[0];
  }
  if($altura &gt; $alturaMax)
  {
    $altura = $alturaMax;
    $largura = ($tamanho[0] * $altura) / $tamanho[1];
  }

  //abrir a imagem original
  $img = imagecreatefromjpeg($imagem);

  //criamos uma nova imagem em branco, q sera a miniatura
  $thumb = imagecreatetruecolor($largura, $altura);

  //agora, copiamos a foto pra nova imagem
  imagecopyresampled($thumb, $img, 0, 0, 0, 0, $largura, $altura, $tamanho[0], $tamanho[1]);

  //e agora eh soh salvar
  imagejpeg($thumb,$destination,90);
}</pre>
<p>Para utilizar a função:</p>
<pre class="brush:php">criaMiniatura("foto.jpg","fotothumb.jpg",120,90);</pre>
<p>A nova miniatura será salva no formato 120&#215;90,  com o nome &#8220;fotothumb.jpg&#8221; .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.erikafocke.com.br/php/criando-thumbnails-miniaturas-no-php-com-a-gd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Manipulação de Imagens no PHP</title>
		<link>http://www.erikafocke.com.br/php/manipulacao-de-imagens-no-php/</link>
		<comments>http://www.erikafocke.com.br/php/manipulacao-de-imagens-no-php/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 18:47:45 +0000</pubDate>
		<dc:creator>Erika</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[GD]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[manipulação de imagens]]></category>

		<guid isPermaLink="false">http://www.erikafocke.com.br/?p=69</guid>
		<description><![CDATA[Este é apenas um post introdutório para preceder os posts que vou fazer sobre manipulação de imagens no PHP.
Há basicamente duas bibliotecas que podemos utilizar para mexer com imagens no PHP:  GD, que geralmente já vem compilada por padrão na maioria das instalações e servidores web por aí afora, e a ImageMagick, que precisa ser [...]]]></description>
			<content:encoded><![CDATA[<p>Este é apenas um post introdutório para preceder os posts que vou fazer sobre manipulação de imagens no PHP.</p>
<p>Há basicamente duas bibliotecas que podemos utilizar para mexer com imagens no PHP:  <a title="documentação da GD no php.net" href="http://www.php.net/manual/en/ref.image.php" target="_blank">GD</a>, que geralmente já vem compilada por padrão na maioria das instalações e servidores web por aí afora, e a <a title="documentação da imagemagick no php.net" href="http://www.php.net/manual/en/book.imagick.php" target="_blank">ImageMagick</a>, que precisa ser instalada por fora, porém possui muito mais recursos do que a GD, além de ser mais rápida, na maioria dos casos.</p>
<p>Venho trabalhando com essas bibliotecas há alguns anos, procurando sempre criar ferramentas divertidas  / inusitadas além das funcionalidades básicas para o dia-a-dia (criar thumbnails, crop de imagem etc). Isso deu origem aos meus sites de montagens de fotos online (<a title="semfrescura" href="http://semfrescura.net">semfrescura.net</a> e <a title="fotomontagens.net" href="http://fotomontagens.net">fotomontagens.net</a> ) .</p>
<p>Vou começar a documentar aqui no blog meus testes e compartilhar um pouco da minha experiência no assunto, que eu adoro.  Quando comecei a mexer com essas bibliotecas, não havia muito material disponível na net, e hoje ainda é pouco o que se encontra principalmente a respeito da ImageMagick.  Espero que ajude alguém!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.erikafocke.com.br/php/manipulacao-de-imagens-no-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Escalonamento de idéias e o algoritmo de cada mente</title>
		<link>http://www.erikafocke.com.br/extras/cronicas/escalonamento-de-ideias-e-o-algoritmo-de-cada-mente/</link>
		<comments>http://www.erikafocke.com.br/extras/cronicas/escalonamento-de-ideias-e-o-algoritmo-de-cada-mente/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 20:22:55 +0000</pubDate>
		<dc:creator>Erika</dc:creator>
				<category><![CDATA[Crônicas]]></category>
		<category><![CDATA[Idéias]]></category>
		<category><![CDATA[textos]]></category>

		<guid isPermaLink="false">http://www.erikafocke.com.br/?p=64</guid>
		<description><![CDATA[Uma tarde em casa, sem fazer nada. Não que não tenha nada pra fazer. Tem um monte de coisas que eu poderia estar fazendo, tantas idéias&#8230; E esse é o problema.
Quando eu sinto isso, eu travo, não consigo fazer nada. É uma sensação de poder e indecisão. Eu posso fazer tantas coisas, eu tenho tantas [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-65" title="processadormental" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2009/12/processadormental.jpg" alt="processadormental" width="300" height="300" />Uma tarde em casa, sem fazer nada. Não que não tenha nada pra fazer. Tem um monte de coisas que eu poderia estar fazendo, tantas idéias&#8230; E esse é o problema.</p>
<p>Quando eu sinto isso, eu travo, não consigo fazer nada. É uma sensação de poder e indecisão. Eu posso fazer tantas coisas, eu tenho tantas idéias, tantas, que fervilham na minha mente, às vezes me fazendo mal, não me deixam relaxar, ficam lutando entre si para ver quem irá obter uma oportunidade de sair da cabeça e tomar forma.</p>
<p>É assim que eu imagino as idéias: várias criaturinhas meio amorfas, coexistindo juntas e querendo se sobressair uma sobre a outra, para que possam se libertar do limbo da mente humana, e tornarem-se reais, tornarem-se algo, uma meta alcançada, um feito. E quando elas começam a brigar, não tem como fazê-las pararem e formarem uma fila indiana.  Sabe, uma fila: &#8220;primeiro a entrar, primeiro a sair&#8221; .  Na verdade, esse algoritmo não dá certo para idéias, existe todo um estudo de prioridades bem complexo, afinal, as idéias de última hora quando são boas precisam ser postas em prática imediatamente, e não podem ficar esperando em uma fila.</p>
<p>E a idéia de &#8220;não fazer nada&#8221; deve ser a mais antiga idéia na história da humanidade, é a primeira idéia que nasce na mente de todas as pessoas. Ela às vezes é muito forte e costuma ganhar das outras com facilidade. Mas cada pessoa tem suas idéias mais fortes, algumas entram várias vezes na fila na hora que quiserem(comer? dormir?), algumas nem entram logo na fila porque precisam esperar outros pré-requisitos antes de entrarem, mas estão sempre lá, esperando. Meses, anos, décadas&#8230; Resistentes, incansáveis. Acho que podemos chamar essas últimas de &#8220;sonhos&#8221;. Outras, coitadas, não duram nada, morrem prematuramente, talvez por falta de alimento.</p>
<p>Então, mesmo nos períodos aparentemente improdutivos (os de &#8220;não fazer nada&#8221;), você está fazendo alguma coisa: pensando! Nosso processador cerebral jamais fica ocioso (exceto talvez pra quem faça meditação). Gerando idéias, se tornando grávido de idéias, veja que termo peculiar!  E exatamente por isso, pela quantidade de idéias, pela briga de prioridades, existe a tal sensação de poder&#8230; É intrigante. Você já parou pra pensar que é capaz de tudo, tanto no &#8220;bem&#8221; quanto no &#8220;mal&#8221;, tanto em coisas inteligentes quanto em coisas absurdamente estúpidas? Você pode sair correndo pelado pela rua agora mesmo, ou pular da janela do apartamento, ou ajudar uma pessoa qualquer desconhecida.</p>
<p>Claro que umas coisas dependem de outras.. Você poderia dizer &#8220;Eu não posso voar&#8221;, mas sim, você até que pode&#8230; Poderia ir pra um aeroporto agora e viajar de avião pra uma cidade e tentar ganhar a vida por lá.  Mas &#8220;Eu não tenho dinheiro para a passagem&#8221;, você ainda poderia dizer, daí se desenrolariam várias outras idéias: você poderia fazer um cartão de crédito e comprar a passagem mesmo sem poder pagar, etc etc etc.</p>
<p>É isso que nos leva a pensar &#8220;o que as pessoas são capazes de fazer para realizarem um sonho??&#8221;. Uma daquelas criaturinhas-idéia que estão esperando há muito tempo para se tornarem realidade&#8230; que outras idéias elas são capazes de criar, para poderem se tornar reais?  Acredito que é por isso que se diz que o ser humano tem uma força divina dentro de si. Uma força criadora, não apenas no sentido de poder gerar outros seres, mas também de realizar, criar, inventar, um poder que pode ser grandioso e destrutivo em igual tamanho.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.erikafocke.com.br/extras/cronicas/escalonamento-de-ideias-e-o-algoritmo-de-cada-mente/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A surpresa do ingênuo</title>
		<link>http://www.erikafocke.com.br/extras/cronicas/a-surpresa-do-ingenuo/</link>
		<comments>http://www.erikafocke.com.br/extras/cronicas/a-surpresa-do-ingenuo/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 16:35:42 +0000</pubDate>
		<dc:creator>Erika</dc:creator>
				<category><![CDATA[Crônicas]]></category>
		<category><![CDATA[desabafos]]></category>
		<category><![CDATA[ingenuidade]]></category>
		<category><![CDATA[verdades]]></category>

		<guid isPermaLink="false">http://www.erikafocke.com.br/?p=53</guid>
		<description><![CDATA[
A surpresa do ingênuo é descobrir que foi otário, que se deixou enganar, que confiou quando não deveria, que deu a mão quando não podia; achando que faria um bem, se fez mal, e também fez mal ao aproveitador, que deixou de aprender alguma coisa, que deixou de fazer alguma coisa que lhe ajudaria a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-58" title="loser" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2009/11/loser-211x300.jpg" alt="loser" width="211" height="300" /></p>
<p>A surpresa do ingênuo é descobrir que foi otário, que se deixou enganar, que confiou quando não deveria, que deu a mão quando não podia; achando que faria um bem, se fez mal, e também fez mal ao aproveitador, que deixou de aprender alguma coisa, que deixou de fazer alguma coisa que lhe ajudaria a crescer, a ser alguém melhor.</p>
<p>A surpresa do ingênuo é perceber que, por mais que tivesse certeza, se enganou, inventou em sua cabeça uma pessoa que não existe, e isso é o que decepciona mais; descobrir que a tal pessoa na qual acreditou, só existe mesmo na sua imaginação.</p>
<p>A tristeza do ingênuo é se sentir subtraído, não materialmente, mas na alma; pior que se sentir traído, é se sentir burro demais por não perceber coisa tão óbvia; é perceber que o erro maior foi seu, e que por mais que prometa a si mesmo que isto nunca mais voltará a acontecer, sabe que continuará sempre ingênuo, será sempre aquele bom e velho otário.</p>
<p>A alegria do ingênuo é quando descobre que existem alguns nos quais se pode confiar, ao contrário do que as suas experiências anteriores demonstraram. Que algumas raras pessoas, ainda que em certos momentos inspirem desconfiança, acabam por surpreender mostrando-se verdadeiras e leais, consigo e com os outros. Nesses momentos de deslumbramento e revelação, é que o ingênuo descobre que a falha não está em si mesmo, por confiar demais, e sim naqueles que não honraram a sua fé.</p>
<p>E assim seguem pela vida os ingênuos, numa constante batalha entre confiança e desconfiança, decepção e surpresa. Cada vez tendo mais certeza de que valeu a pena; que em cada tropeço, avança-se 5 passos no caminho da sabedoria.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.erikafocke.com.br/extras/cronicas/a-surpresa-do-ingenuo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ceticismo como Castigo</title>
		<link>http://www.erikafocke.com.br/extras/cronicas/ceticismo-como-castigo/</link>
		<comments>http://www.erikafocke.com.br/extras/cronicas/ceticismo-como-castigo/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 17:31:14 +0000</pubDate>
		<dc:creator>Erika</dc:creator>
				<category><![CDATA[Crônicas]]></category>
		<category><![CDATA[ceticismo]]></category>
		<category><![CDATA[questões]]></category>
		<category><![CDATA[textos]]></category>

		<guid isPermaLink="false">http://www.erikafocke.com.br/?p=48</guid>
		<description><![CDATA[À medida que vamos crescendo, perdemos pouco a pouco as nossas crenças infantis; descobrimos que &#8220;Papai Noel&#8221; não existe (apesar que desde criança eu já sabia disso), muito menos o &#8220;Coelhinho da Páscoa&#8221;. Que não tem nada demais embaixo da cama, ou dentro do armário. E se o galo cantar quando você estiver fazendo uma [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-49" title="maca" src="http://www.erikafocke.com.br/wp/wp-content/uploads/2009/11/maca-168x300.jpg" alt="maca" width="168" height="300" />À medida que vamos crescendo, perdemos pouco a pouco as nossas crenças infantis; descobrimos que &#8220;Papai Noel&#8221; não existe (apesar que desde criança eu já sabia disso), muito menos o &#8220;Coelhinho da Páscoa&#8221;. Que não tem nada demais embaixo da cama, ou dentro do armário. E se o galo cantar quando você estiver fazendo uma careta, nada irá acontecer.</p>
<p>Chegamos à adolescência e vamos perdendo mais algumas de nossas crenças dessa nova fase &#8211; descobrimos que o primeiro beijo não é lá essas coisas, que nada demais acontece porque completamos 13 ou 15 anos (mesmo se fizermos uma baita festa),  e não &#8220;viramos adultos&#8221; quando completamos 18 anos. O príncipe encantado não tem nada de encantado, e é mais fácil e mais comum um príncipe virar sapo, do que o contrário acontecer.</p>
<p>A questão é que vamos, pouco a pouco, comendo a maçã&#8230; e o preço que pagamos por isso é alto, porém, justo. À medida que vamos tendo acesso ao conhecimento e às verdades da vida, pagamos com desilusões, e vamos ficando cada dia um pouquinho mais céticos com relação ao mundo e às pessoas. Esse é um processo natural.</p>
<p>Parece que quanto mais conhecemos as coisas do mundo, as leis físicas, as descobertas científicas, mais provamos o gostinho amargo do &#8220;tanto faz&#8221; . É amargo, porque não deixa de ser uma decepção. Na verdade, não é um ceticismo completo; é simplesmente a incerteza. É chegar à certeza de que não se pode ter certeza de nada nessa vida.</p>
<p>É como amar, se desapontar, e não querer mais amar ninguém. Ou querer, mas ter medo, não entrar 100%, ficar sempre com um pézinho atrás, pronto pra dizer &#8220;eu já sabia!!!&#8221; no momento oportuno.</p>
<p>Enquanto aqueles, que vivem na ignorância, não carregam dúvidas ou incertezas, seguem adiante sem olhar pros lados, e parecem ser sempre felizes.</p>
<p>Quem mandou comer a maçã? Você já sabia, que tudo tem um preço, e que você paga pelo que você sabe.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.erikafocke.com.br/extras/cronicas/ceticismo-como-castigo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
