php 图片颜色处理,php 使用 imagick 处理图片--获取图片颜色等高级处理

要用PHP建立分析图片颜色的程序,需要安装imagick扩展,这个一个pecl扩展,可以进行很多高级的图片操作,有兴趣的话可以仔细研究研究。

例如可以获取一张图片的多种颜色。

下面介绍如何安装和使用:

我的PHP版本为5.2.9,Apache 版本为2.0,win环境。我安装的Imagick的版本为2.2.1.

请分别下载下面三个资源文件:(我已经上传到资源库中,可以点击下载)

php-5.2.4_magickwand_q16_st.dll

php-5.2.4_magickwand_dyn.dll

php_imagick.dll

然后放置在php/ext 文件夹中,接着在  php.ini 文件夹中 配置 如下

extension=php-5.2.4_magickwand_q16_st.dll

extension=php_imagick.dll 然后重启Apache,然后查看phpinfo(),可以看到如下配置,即安装成功。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

下面介绍如何使用:

举例代码:

$average = new Imagick("3dcf97dac6ff58cc692846acaae37060.png");

$average->quantizeImage( 10, Imagick::COLORSPACE_RGB, 0, false, false );

/* 每个颜色取样一个像素 */

$average->uniqueImageColors();

/* 克隆对象并调节到明色*/

$bright = $average->clone();

$bright->modulateImage ( 125, 200, 100 );

/* 克隆对象并调节到暗色 */

$dark = $average->clone();

$dark->modulateImage ( 80, 100, 100 );

/* 建立图片函数 */

function createImages( Imagick $composite, Imagick $im )

{

/* Get ImagickPixelIterator */

$it = $im->getPixelIterator();

/* Reset the iterator to begin */

$it->resetIterator();

/* Loop trough rows */

while( $row = $it->getNextIteratorRow() )

{

/* Loop trough columns */

foreach ( $row as $pixel )

{

/* Create a new image which contains the color */

$composite->newImage( 20, 20, $pixel );

$composite->borderImage( new ImagickPixel( "black" ), 1, 1 );

}

}

}

/*创建一个图片以保存颜色 */

$composite = new Imagick();

createImages( $composite, $dark );

createImages( $composite, $average );

createImages( $composite, $bright );

/* 组合颜色到一个图片 */

$montage = $composite->montageImage( new imagickdraw(), "10x3+0+0",

"20x20+4+3>", imagick::MONTAGEMODE_UNFRAME,

"0x0+3+3" );

/* 释放资源 */

$composite->destroy();

/* 建立空图片 */

$canvas = new Imagick();

$canvas->newImage( $montage->getImageWidth() + 55,

$montage->getImageHeight(),

new ImagickPixel( "white" ) );

/* 设置图片格式 */

$canvas->setImageFormat( "png" );

/* 设置字体大小 */

$draw = new ImagickDraw();

$draw->setFontSize( 12 );

/* 为每个调色板建立标签 */

$canvas->annotateImage( $draw, 5, 20, 0, "Dark: " );

$canvas->annotateImage( $draw, 5, 45, 0, "Average: " );

$canvas->annotateImage( $draw, 5, 70, 0, "Bright: " );

/* 整合调色板和标签*/

$canvas->compositeImage( $montage, Imagick::COMPOSITE_OVER, 55, 0 );

/* 输出图片 */

header( "Content-Type: image/png" );

echo $canvas;

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值