2009-03-31

在Symfony中使用第三方图片处理工具WideImage

类归于: PHP, symfony — 标签:, , , maker @ 14:01

最近在整理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->applyMask($mask, 0, 0)->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->applyFilter(IMG_FILTER_GRAYSCALE, 111, 222, 111)->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->resize(100, '30%', 'fill')->saveToFile($dir.'resizefill.jpg');
$img->resize(100, '30%', 'inside')->saveToFile($dir.'resizeinside.jpg');
$img->resize(100, '30%', 'outside')->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 = $img->getCanvas();
$canvas->setFont(new wiFont_TTF($font, 10, $img->allocateColor(0,0,255)));
// 参数 x y text angel
$canvas->writeText(60, 50, $text, 0);
$img->saveToFile($dir.'font.png');
return sfView::NONE;
}

更多的示例请查阅WideImage的主页(http://wideimage.sourceforge.net/)或者查看demos。

评论暂缺 »

还没有任何评论。

这篇文章上的评论 RSS feed TrackBack URL

留下评论

WordPress 所驱动