使用php合并二維碼頭像圖片失真的問(wèn)題
要用PHP建立分析圖片顏色的程序,需要安裝imagick擴(kuò)展,這個(gè)一個(gè)pecl擴(kuò)展,可以進(jìn)行很多高級(jí)的圖片操作户辞,有興趣的話可以仔細(xì)研究研究。
例如可以獲取一張圖片的多種顏色癞谒。
下面介紹如何安裝和使用:
我的PHP版本為5.2.9底燎,Apache 版本為2.0,win環(huán)境弹砚。我安裝的Imagick的版本為2.2.1.
請(qǐng)分別下載下面三個(gè)資源文件:(我已經(jīng)上傳到資源庫(kù)中双仍,可以點(diǎn)擊下載)
- 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()朱沃,可以看到如下配置,即安裝成功。
1336488838_5074.jpg
1336488886_5290.jpg
下面介紹如何使用:
這里是imagick的函數(shù)庫(kù)文檔:http://cn2.php.net/imagick
舉例代碼:
<?php
$average = new Imagick("3dcf97dac6ff58cc692846acaae37060.png");
$average->quantizeImage( 10, Imagick::COLORSPACE_RGB, 0, false, false );
/* 每個(gè)顏色取樣一個(gè)像素 */
$average->uniqueImageColors();
/* 克隆對(duì)象并調(diào)節(jié)到明色*/
$bright = $average->clone();
$bright->modulateImage ( 125, 200, 100 );
/* 克隆對(duì)象并調(diào)節(jié)到暗色 */
$dark = $average->clone();
$dark->modulateImage ( 80, 100, 100 );
/* 建立圖片函數(shù) */
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 );
}
}
}
/*創(chuàng)建一個(gè)圖片以保存顏色 */
$composite = new Imagick();
createImages( $composite, $dark );
createImages( $composite, $average );
createImages( $composite, $bright );
/* 組合顏色到一個(gè)圖片 */
$montage = $composite->montageImage( new imagickdraw(), "10x3+0+0",
"20x20+4+3>", imagick::MONTAGEMODE_UNFRAME,
"0x0+3+3" );
/* 釋放資源 */
$composite->destroy();
/* 建立空?qǐng)D片 */
$canvas = new Imagick();
$canvas->newImage( $montage->getImageWidth() + 55,
$montage->getImageHeight(),
new ImagickPixel( "white" ) );
/* 設(shè)置圖片格式 */
$canvas->setImageFormat( "png" );
/* 設(shè)置字體大小 */
$draw = new ImagickDraw();
$draw->setFontSize( 12 );
/* 為每個(gè)調(diào)色板建立標(biāo)簽 */
$canvas->annotateImage( $draw, 5, 20, 0, "Dark: " );
$canvas->annotateImage( $draw, 5, 45, 0, "Average: " );
$canvas->annotateImage( $draw, 5, 70, 0, "Bright: " );
/* 整合調(diào)色板和標(biāo)簽*/
$canvas->compositeImage( $montage, Imagick::COMPOSITE_OVER, 55, 0 );
/* 輸出圖片 */
header( "Content-Type: image/png" );
echo $canvas;
?>
轉(zhuǎn)發(fā)來(lái)自http://blog.csdn.net/ljguo212/article/details/7548029