<?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>4's symfony blog &#187; wideimage</title>
	<atom:link href="http://www.foolbirds.com/t/wideimage/feed" rel="self" type="application/rss+xml" />
	<link>http://www.foolbirds.com</link>
	<description>all about symfony</description>
	<lastBuildDate>Tue, 17 Aug 2010 01:22:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>在Symfony中使用第三方图片处理工具WideImage</title>
		<link>http://www.foolbirds.com/wideimage-in-symfony.html</link>
		<comments>http://www.foolbirds.com/wideimage-in-symfony.html#comments</comments>
		<pubDate>Tue, 31 Mar 2009 06:01:00 +0000</pubDate>
		<dc:creator>maker</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[wideimage]]></category>
		<category><![CDATA[中文]]></category>
		<category><![CDATA[图片]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=693</guid>
		<description><![CDATA[最近在整理php的一些库，同时也在研究图片处理的相关功能，所以就发现了WideImage, 虽然是很强大的一个图片处理库，但貌似在国内没有很多人知道。
看了网上很多的图片处理类，功能也就是简单的水印和缩略图，这些WideImage都不在话下，在WideImage源代码中的demos里，我们可以看到转换灰度图，反色，遮罩（Mask）处理，通道（Channels）处理，水印，滤镜，缩放，旋转，翻转和Canvas(我理解也就是在图片上写字)等等功能。
下面简单记录一下如何将WideImage用在symfony中。
首先我们去WideImage的主页（http://wideimage.sourceforge.net/）下载源码包，解包之后会有三个目录，lib，tests，demos，lib是库文件，tests是测试文件，demos中是作者提供的代码示例，可以直接运行访问，要在symfony中使用WideImage，只要将lib目录放在项目的lib目录中就可以。
下面是一些简单的例子：

/**
* 遮罩处理
*/
public function executeMask(sfWebRequest $request)
{
$dir = sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR;
$img = wiImage::load($dir.'test.gif');
$mask = wiImage::load($dir.'m.gif');
$img-&#62;applyMask($mask, 0, 0)-&#62;saveToFile($dir.'mask.png');
return sfView::NONE;
}
/**
* 过滤器和格式转换
*
*/
public function executeFilter(sfWebRequest $request)
{
$dir = sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR;
$img = wiImage::load($dir.'test.gif');
$img-&#62;applyFilter(IMG_FILTER_GRAYSCALE, 111, 222, 111)-&#62;saveToFile($dir.'filter.png');
return sfView::NONE;
}
/**
* 缩放
*/
public function executeResize(sfWebRequest $request)
{
$dir = sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR;
$img = wiImage::load($dir.'test.jpg');
$img-&#62;resize(100, '30%', 'fill')-&#62;saveToFile($dir.'resizefill.jpg');
$img-&#62;resize(100, '30%', 'inside')-&#62;saveToFile($dir.'resizeinside.jpg');
$img-&#62;resize(100, '30%', 'outside')-&#62;saveToFile($dir.'resizeoutside.jpg');
return sfView::NONE;
}
/**
* 文字水印
*/
public function executeFont(sfWebRequest $request)
{
$dir = sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR;
$img = wiImage::load($dir.'test.jpg');
/*
在图片上输出中文的问题困扰了我很久，有些字体始终是乱码，这里使
用的是方正仿宋简体，可以正常输出UTF-8编码的中文简体字符串。
*/
$font = $dir.'fzfsjt.ttf';
$text = '你好';
$canvas = [...]]]></description>
			<content:encoded><![CDATA[<p>最近在整理php的一些库，同时也在研究图片处理的相关功能，所以就发现了<a href="http://wideimage.sourceforge.net/">WideImage</a>, 虽然是很强大的一个图片处理库，但貌似在国内没有很多人知道。</p>
<p>看了网上很多的图片处理类，功能也就是简单的水印和缩略图，这些WideImage都不在话下，在WideImage源代码中的demos里，我们可以看到转换灰度图，反色，遮罩（Mask）处理，通道（Channels）处理，水印，滤镜，缩放，旋转，翻转和Canvas(我理解也就是在图片上写字)等等功能。</p>
<p>下面简单记录一下如何将WideImage用在symfony中。</p>
<p>首先我们去WideImage的主页（<a href="http://wideimage.sourceforge.net/">http://wideimage.sourceforge.net/</a>）下载源码包，解包之后会有三个目录，lib，tests，demos，lib是库文件，tests是测试文件，demos中是作者提供的代码示例，可以直接运行访问，要在symfony中使用WideImage，只要将lib目录放在项目的lib目录中就可以。</p>
<p>下面是一些简单的例子：<br />
<code><br />
/**<br />
* 遮罩处理<br />
*/<br />
public function executeMask(sfWebRequest $request)<br />
{<br />
$dir = sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR;<br />
$img = wiImage::load($dir.'test.gif');<br />
$mask = wiImage::load($dir.'m.gif');<br />
$img-&gt;applyMask($mask, 0, 0)-&gt;saveToFile($dir.'mask.png');<br />
return sfView::NONE;<br />
}</code></p>
<p><code>/**<br />
* 过滤器和格式转换<br />
*<br />
*/<br />
public function executeFilter(sfWebRequest $request)<br />
{<br />
$dir = sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR;<br />
$img = wiImage::load($dir.'test.gif');<br />
$img-&gt;applyFilter(IMG_FILTER_GRAYSCALE, 111, 222, 111)-&gt;saveToFile($dir.'filter.png');<br />
return sfView::NONE;<br />
}</code></p>
<p><code>/**<br />
* 缩放<br />
*/<br />
public function executeResize(sfWebRequest $request)<br />
{<br />
$dir = sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR;<br />
$img = wiImage::load($dir.'test.jpg');<br />
$img-&gt;resize(100, '30%', 'fill')-&gt;saveToFile($dir.'resizefill.jpg');<br />
$img-&gt;resize(100, '30%', 'inside')-&gt;saveToFile($dir.'resizeinside.jpg');<br />
$img-&gt;resize(100, '30%', 'outside')-&gt;saveToFile($dir.'resizeoutside.jpg');<br />
return sfView::NONE;<br />
}</code></p>
<p><code>/**<br />
* 文字水印<br />
*/<br />
public function executeFont(sfWebRequest $request)<br />
{<br />
$dir = sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR;<br />
$img = wiImage::load($dir.'test.jpg');<br />
/*<br />
在图片上输出中文的问题困扰了我很久，有些字体始终是乱码，这里使<br />
用的是方正仿宋简体，可以正常输出UTF-8编码的中文简体字符串。<br />
*/<br />
$font = $dir.'fzfsjt.ttf';<br />
$text = '你好';<br />
$canvas = $img-&gt;getCanvas();<br />
$canvas-&gt;setFont(new wiFont_TTF($font, 10, $img-&gt;allocateColor(0,0,255)));<br />
// 参数 x y text angel<br />
$canvas-&gt;writeText(60, 50, $text, 0);<br />
$img-&gt;saveToFile($dir.'font.png');<br />
return sfView::NONE;<br />
}<br />
</code><br />
更多的示例请查阅WideImage的主页（<a href="http://wideimage.sourceforge.net/">http://wideimage.sourceforge.net/</a>）或者查看demos。</p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/about-upload-images-path.html" title="关于上传图片后显示上传图片的路径问题">关于上传图片后显示上传图片的路径问题</a></li><li><a href="http://www.foolbirds.com/use_symfony_filter_to_filteredurl.html" title="使用SYMFONY Filter 过滤URL">使用SYMFONY Filter 过滤URL</a></li><li><a href="http://www.foolbirds.com/%e4%bb%bfsymfony%e6%9c%ba%e5%88%b6%e5%ae%9e%e7%8e%b0%e4%b8%8d%e7%94%a8require%e6%88%96%e8%80%85include%e6%9d%a5%e5%ae%9e%e4%be%8b%e5%8c%96%e7%b1%bb.html" title="仿symfony机制实现不用require或者include来实例化类">仿symfony机制实现不用require或者include来实例化类</a></li><li><a href="http://www.foolbirds.com/use-datetime-in-php5-1-x-with-symfony.html" title="symfony1.4 DateTime对于PHP低版本的兼容问题">symfony1.4 DateTime对于PHP低版本的兼容问题</a></li><li><a href="http://www.foolbirds.com/%e5%a6%82%e4%bd%95%e5%9c%a8fixtures-yml%e5%86%99%e5%be%aa%e7%8e%af%e6%b7%bb%e5%8a%a0%e6%95%b0%e6%8d%ae.html" title="如何在fixtures.yml写循环添加数据">如何在fixtures.yml写循环添加数据</a></li><li><a href="http://www.foolbirds.com/symfony-1-4-database-utf8.html" title="symfony 1.4 数据库 utf8设置">symfony 1.4 数据库 utf8设置</a></li><li><a href="http://www.foolbirds.com/symfony-cheat-sheet.html" title="symfony cheat sheet">symfony cheat sheet</a></li><li><a href="http://www.foolbirds.com/cheat-sheets.html" title="Cheat Sheets!">Cheat Sheets!</a></li><li><a href="http://www.foolbirds.com/image-upload-preview.html" title="兼容IE6,IE7,IE8和Firefox的图片上传预览效果">兼容IE6,IE7,IE8和Firefox的图片上传预览效果</a></li><li><a href="http://www.foolbirds.com/how-to-use-swift-to-send-mail-in-symfon.html" title="如何使用swift发送邮件">如何使用swift发送邮件</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/wideimage-in-symfony.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
