使用(yòng)Think\Image類進行(xíng)圖像處理(lǐ)功®↓Ω能(néng),支持Gd庫和(hé)Imagick庫,λ'≠包括對(duì)GIf圖像處理(lǐ)的(de)支持÷✘∏•。
實例化(huà)類庫
$image = new \Think\Image();
默認使用(yòng)GD庫進行(xíng)圖像操作(zuò),如(r€×ú)果需要(yào)使用(yòng)Imagick♦¶©"庫操作(zuò)的(de)話(huà),需要÷α$π(yào)改成:
$image = new \Think\Image(\Think\Image::IMAGE_IMAGICK);// 或者采用(yòng)$image = new \Think\Image('Imagick');
圖像操作(zuò)
下(xià)面來(lái)看(kàn)下(xià)基礎☆'&的(de)圖像操作(zuò)功能(néng π)的(de)使用(yòng)方法。
打開(kāi)圖像文(wén)件(jiàn≠×)
假設當前入口文(wén)件(jiàn)目錄下(xià)≈™ 面有(yǒu)一(yī)個(gè)1.jpg文(wén)件(jiàn↔ ™),如(rú)圖所示:

使用(yòng)open方法打開(kāi)圖像文(wén)件(jiàn)進行(÷ δ£xíng)相(xiàng)關操作(zuò☆):
$image = new \Think\Image();$image->open('./1.jpg');
也(yě)可(kě)以簡化(huà)成下÷Ω(xià)面的(de)方式:
$image = new \Think\Image(\Think\Image::IMAGE_GD,'./1.jpg'); // GD庫// 或者$image = new \Think\Image(\Think\Image::IMAGE_IMAGICK,'./1.jpg'); // imagick庫
獲取圖像信息
可(kě)以獲取打開(kāi)圖片的(de)×ε 信息,包括圖像大(dà)小(xiǎo)、類型等,例如(rú):
$image = new \Think\Image();$image->open('./1.jpg');$width = $image->width(); // 返回圖片的(de)寬度$height = $image->height(); // 返回圖片的(de)高(gāo)度$type = $image->type(); // 返回圖片的(de)類型$mime = $image->mime(); // 返回圖片的(de)mime類型$size = $image->size(); // 返回圖片的(de)尺寸數(shù)組 →β ₽0 圖片寬度 1 圖片高(gāo)度
裁剪圖片
使用(yòng)crop和(hé)save方法完成裁剪圖片功能β↔≠(néng)。
$image = new \Think\Image();$image->open('./1.jpg');//将圖片裁剪為(wèi)400x400并保存為(wèi)co₽$ rp.jpg$image->crop(400, 400)->save('./crop.jpg');
生(shēng)成的(de)圖片如(rú)圖:&π∑£

支持從(cóng)某個(gè)坐(zuò)标開(kāi)始裁剪,例如>↕♣(rú)下(xià)面從(cóng)(100,30)開(kāi)始裁∏♦剪:
$image = new \Think\Image();$image->open('./1.jpg');//将圖片裁剪為(wèi)400x400并保存為(wèi)cor•§p.jpg$image->crop(400, 400,100,30)->save('./crop.jpg');
生(shēng)成的(de)圖片如(rú)圖:

生(shēng)成縮略圖
使用(yòng)thumb方法生(shēng)成↑£≠縮略圖
$image = new \Think\Image();$image->open('./1.jpg');// 按照(zhào)原圖的(de)比例生(shēng)成一Ωλ(yī)個(gè)最大(dà)為(wèi)150*150的(de)縮略圖并保存®>♣↓為(wèi)thumb.jpg$image->thumb(150, 150)->save('./thumb.jpg');
生(shēng)成的(de)縮略圖如(rú)圖'Ω☆₹所示:

我們看(kàn)到(dào)實際生(shēng)成的(±★δde)縮略圖并不(bù)是(shì)150*150,因為(wèi≠ )默認采用(yòng)原圖等比例縮放(fàng)的(de)方$≥$式生(shēng)成縮略圖,最大(dà)寬度是(shì)150。
可(kě)以支持其他(tā)類型的(de)縮略圖生(sh♦∑ēng)成,設置包括Think\Image的(de)下(xià)列★™→常量或者對(duì)應的(de)數(shù)字:
IMAGE_THUMB_SCALE = 1 ; //等比例縮放(fàng)類型IMAGE_THUMB_FILLED = 2 ; //縮放(fàng)後填充類型IMAGE_THUMB_CENTER = 3 ; //居中裁剪類型IMAGE_THUMB_NORTHWEST = 4 ; //左上(shàng)角裁剪類型IMAGE_THUMB_SOUTHEAST = 5 ; //右下(xià)角裁剪類型IMAGE_THUMB_FIXED = 6 ; //固定尺寸縮放(fàng)類型
例如(rú):
居中裁剪
$image = new \Think\Image();$image->open('./1.jpg');// 生(shēng)成一(yī)個(g ₹<è)居中裁剪為(wèi)150*150的(de)縮略圖并™'保存為(wèi)thumb.jpg$image->thumb(150, 150,\Think\Image::IMAGE_THUMB_CENTER)->save('./thumb.jpg');
居中裁剪後生(shēng)成的(de)縮σ≠略圖效果如(rú)圖:

左上(shàng)角剪裁
$image = new \Think\Image();$image->open('./1.jpg');// 生(shēng)成一(yī)個(gè)左上(shàn₹★&g)角裁剪為(wèi)150*150的(d€ e)縮略圖并保存為(wèi)thumb.jpg$image->thumb(150, 150,\Think\Image::IMAGE_THUMB_NORTHWEST)->save('./thumb.jpg');
左上(shàng)角裁剪後生(shēng)成的(de)縮∑¥略圖效果如(rú)圖:

縮放(fàng)填充
$image = new \Think\Image();$image->open('./1.jpg');// 生(shēng)成一(yī)個(gè)縮放(fà•$ng)後填充大(dà)小(xiǎo)150*150的(de)♦≈↕縮略圖并保存為(wèi)thumb.jpΩ←±g$image->thumb(150, 150,\Think\Image::IMAGE_THUMB_FILLED)->save('./thumb.jpg');
縮放(fàng)填充後生(shēng)成的(de)縮略圖效果如(r€•ú)圖:

固定大(dà)小(xiǎo)
$image = new \Think\Image();$image->open('./1.jpg');// 生(shēng)成一(yī)個(gè)固定大(dà)小(xi££↓ǎo)為(wèi)150*150的(de)縮略圖并保存為(wèi)thum £b.jpg$image->thumb(150, 150,\Think\Image::IMAGE_THUMB_FIXED)->save('./thumb.jpg');
采用(yòng)固定大(dà)小(xiǎo)♥ &的(de)縮略圖可(kě)能(néng)會(huì)有(yǒuε↕)所變形,生(shēng)成的(de)縮略圖效果如(©♦rú)圖:

添加圖片水(shuǐ)印
$image = new \Think\Image();$image->open('./1.jpg');//将圖片裁剪為(wèi)440x440并保存為(wφ♠↕èi)corp.jpg$image->crop(440, 440)->save('./crop.jpg');// 給裁剪後的(de)圖片添加圖片水(shuǐ)×®$印(水(shuǐ)印文(wén)件(jiàn)位于./logo.pn★♣∞g),位置為(wèi)右下(xià)角,保存為(wèi)water.g ♥≈§if$image->water('./logo.png')->save("water.gif");// 給原圖添加水(shuǐ)印并保存為(wèi)water_o.gi☆¥✘f(需要(yào)重新打開(kāi)原圖)$image->open('./1.jpg')->water('./logo.png')->save("water_o.gif");
water方法的(de)第二個(gè)參數(s> ₩hù)表示水(shuǐ)印的(de)位置,可(kě)以傳入下(↕xià)列Think\Imag類的(de)常量或者對(duì)應的(d∞→βεe)數(shù)字:
IMAGE_WATER_NORTHWES★∞T = 1 ; //左上(shàng)角水(shuǐ)印IMAGE_WATER_NORTH = 2 ; //上(shàng)居中水(shuǐ)印∑γIMAGE_WATER_NORTHEAST = 3 ; //右上(shàng)角水(shuǐ)印IMAGE_WATER_WEST = 4 ; //左居中水(shuǐ)印IMAGE_WATER_CENTER = 5 ; //居中水(shuǐ)印IMAGE_WATER_EAST = 6 ; //右居中水(shuǐ)印IMAGE_WATER_SOUTHWEST = 7 ; //左下(xià)角水(shuǐ)印IMAGE_WATER_SOUTH = 8 ; //下(xià)居中水(shuǐ)印IMAGE_WATER_SOUTHEAST = 9 ; //右下(xià)角水(shuǐ)印
例如(rú):
$image = new \Think\Image();// 在圖片左上(shàng)角添加水(shuǐ)印(水(shu¥σ ǐ)印文(wén)件(jiàn)位于./log₩ε£'o.png) 并保存為(wèi)water.jpg$image->open('./1.jpg')->water('./logo.png',\Think\Image::IMAGE_WATER_NORTHWEST)->save("water.jpg"©↔);
生(shēng)成的(de)圖片效果如(rú)下↔®(xià):

還(hái)可(kě)以支持水(shuǐ)印圖片的(de)透明(míng)度(α >0~100,默認值是(shì)80),例如(rú):
$image = new \Think\Image();// 在圖片左上(shàng)角添加水(shuǐ)印(水(shuǐ≤≈•λ)印文(wén)件(jiàn)位于./logo.png) 水(shuǐ)印圖片•β 的(de)透明(míng)度為(wèi)50 并保存為(wèi≠✔α)water.jpg$image->open('./1.jpg')->water('./logo.png',\Think\Image::IMAGE_WATER_NORTHWEST,50)->save("water.jpg");
生(shēng)成的(de)效果如(rú)下(xià)σ§:

也(yě)可(kě)以支持給圖片添加文(wé↔∑n)字水(shuǐ)印(假設在入口文(wén)件(jià←§≈n)的(de)同級目錄下(xià)存在1.ttf®£字體(tǐ)文(wén)件(jiàn)),例≈γπ如(rú):
$image = new \Think\Image();// 在圖片右下(xià)角添加水(shuǐ)印→文(wén)字 ThinkPHP 并保存為(wèi)new.jpg$image->open('./1.jpg')->text('ThinkPHP','./1.ttf',20,'#000000',\Think\Image::IMAGE_WATER_SOUTHEAST≠↓±¶)->save("new.jpg");
生(shēng)成的(de)圖片效果:





