?
This document uses PHP Chinese website manual Release
CodeIgniter的Image Manipulation類允許您執(zhí)行以下操作:
圖像大小調(diào)整
縮略圖創(chuàng)建
圖像裁剪
圖像旋轉(zhuǎn)
圖像水印
所有三個(gè)主要的圖像庫都支持:GD / GD2,NetPBM和ImageMagick
注意
水印只能使用GD / GD2庫。另外,即使支持其他庫,為了使腳本計(jì)算圖像屬性,GD也是必需的。但是,圖像處理將在您指定的庫中執(zhí)行。
初始化類
處理圖像
處理方法
優(yōu)先
在配置文件中設(shè)置首選項(xiàng)
圖像水印
文本首選項(xiàng)
覆蓋首選項(xiàng)
兩種類型的水印
為圖像加水印
水印首選項(xiàng)
類參考
像CodeIgniter中的大多數(shù)其他類一樣,image類在您的控制器中使用$ this-> load-> library函數(shù)進(jìn)行初始化:
$this->load->library('image_lib');
一旦library被加載,它將準(zhǔn)備好使用。您將用來調(diào)用所有函數(shù)的圖像庫對象是:$this->image_lib
無論您想要執(zhí)行的處理類型(調(diào)整大小,裁剪,旋轉(zhuǎn)還是加水?。?,一般過程都是相同的。您將設(shè)置與您打算執(zhí)行的操作相對應(yīng)的某些首選項(xiàng),然后調(diào)用四種可用處理函數(shù)之一。例如,要?jiǎng)?chuàng)建圖像縮略圖,您需要執(zhí)行以下操作:
$config['image_library'] = 'gd2';$config['source_image'] = '/path/to/image/mypic.jpg';$config['create_thumb'] = TRUE;$config['maintain_ratio'] = TRUE;$config['width'] = 75;$config['height'] = 50;$this->load->library('image_lib', $config);$this->image_lib->resize();
上面的代碼告訴image_resize函數(shù)查找位于source_image文件夾中的名為mypic.jpg的圖像,然后使用GD2 image_library創(chuàng)建一個(gè)75×50像素的縮略圖。由于啟用了maintain_ratio選項(xiàng),拇指將盡可能接近目標(biāo)寬度和高度,同時(shí)保留原始高寬比。縮略圖將被稱為mypic_thumb.jpg,并位于與source_image相同的級別。
注意
為了允許圖像類進(jìn)行任何處理,包含圖像文件的文件夾必須具有寫入權(quán)限。
注意
對于某些操作,圖像處理可能需要大量的服務(wù)器內(nèi)存。如果您在處理圖像時(shí)遇到內(nèi)存不足錯(cuò)誤,則可能需要限制它們的最大尺寸,和/或調(diào)整PHP內(nèi)存限制。
有四種可用的處理方法:
$這個(gè) - > image_lib->調(diào)整()
$這個(gè) - > image_lib->作物()
$這個(gè) - > image_lib->旋轉(zhuǎn)()
$這個(gè) - > image_lib->水?。ǎ?/p>
這些方法在成功時(shí)返回布爾值TRUE,在失敗時(shí)返回FALSE。如果失敗,您可以使用此功能檢索錯(cuò)誤消息:
echo $this->image_lib->display_errors();
一個(gè)好的做法是有條件地使用處理函數(shù),在失敗時(shí)顯示錯(cuò)誤,如下所示:
if ( ! $this->image_lib->resize()){ echo $this->image_lib->display_errors();}
注意
您可以選擇指定要應(yīng)用于錯(cuò)誤的HTML格式,方法是在函數(shù)中提交開始/結(jié)束標(biāo)記,如下所示:
$this->image_lib->display_errors('<p>', '</p>');
下面介紹的首選項(xiàng)可讓您調(diào)整圖像處理以滿足您的需求。
請注意,并非所有首選項(xiàng)都可用于每個(gè)功能。例如,x / y軸首選項(xiàng)僅適用于圖像裁剪。同樣,寬度和高度偏好對裁剪沒有影響?!翱捎眯浴绷兄甘灸男┕δ苤С纸o定的偏好。
可用性圖例:
R - 圖像大小調(diào)整
C - 圖像裁剪
X - 圖像旋轉(zhuǎn)
W - 圖像水印
偏愛 | 默認(rèn)值 | 選項(xiàng) | 描述 | 可用性 |
---|---|---|---|---|
image_library | GD2 | GD,GD2,ImageMagick,NetPBM | 設(shè)置要使用的圖像庫。 | R,C,X,W |
LIBRARY_PATH | 沒有 | 沒有 | 將服務(wù)器路徑設(shè)置為ImageMagick或NetPBM庫。如果您使用這些庫中的任何一個(gè),則必須提供路徑。 | R,C,XR,C,S,W |
source_image | 沒有 | 沒有 | 設(shè)置源圖像名稱/路徑。路徑必須是相對或絕對的服務(wù)器路徑,而不是URL。 | |
dynamic_output | 假 | TRUE / FALSE(布爾) | 確定新圖像文件是寫入磁盤還是動(dòng)態(tài)生成。注意:如果您選擇動(dòng)態(tài)設(shè)置,則一次只能顯示一個(gè)圖像,并且無法將其定位到頁面上。它只是將原始圖像動(dòng)態(tài)地輸出到瀏覽器以及圖像標(biāo)題。 | R,C,X,W |
file_permissions | 0644 | (整數(shù)) | 將文件系統(tǒng)權(quán)限應(yīng)用于生成的映像文件,并將其寫入磁盤。警告:使用八進(jìn)制整數(shù)表示法! | R,C,X,W |
質(zhì)量 | 90% | 1 - 100% | 設(shè)置圖像的質(zhì)量。質(zhì)量越高,文件大小越大。 | R,C,X,W |
新圖片 | 沒有 | 沒有 | 設(shè)置目標(biāo)圖像名稱/路徑。創(chuàng)建圖像副本時(shí),您將使用此首選項(xiàng)。路徑必須是相對或絕對的服務(wù)器路徑,而不是URL。 | R,C,X,W |
寬度 | 沒有 | 沒有 | 設(shè)置您希望將圖像設(shè)置為的寬度。 | R,C |
高度 | 沒有 | 沒有 | 設(shè)置您希望將圖像設(shè)置為的高度。 | R,C |
create_thumb | 假 | TRUE / FALSE(布爾) | 告訴圖像處理功能創(chuàng)建一個(gè)拇指。 | [R |
thumb_marker | _拇指 | 沒有 | 指定縮略圖指示器。它將被插入文件擴(kuò)展名之前,所以mypic.jpg會成為mypic_thumb.jpg | [R |
maintain_ratio | 真正 | TRUE / FALSE(布爾) | 指定在調(diào)整大小或使用硬值時(shí)是否保持原始寬高比。 | R,C |
master_dim | 汽車 | 自動(dòng),寬度,高度 | 指定調(diào)整大小或創(chuàng)建縮略圖時(shí)要用作主軸的內(nèi)容。例如,假設(shè)您要將圖像大小調(diào)整為100 X 75像素。如果源圖像尺寸不允許對這些尺寸進(jìn)行完美調(diào)整大小,則此設(shè)置將確定應(yīng)將哪個(gè)軸用作硬值?!白詣?dòng)”根據(jù)圖像是否高于寬度自動(dòng)設(shè)置軸,反之亦然。 | [R |
rotation_angle | 沒有 | 90,180,270,花園,hor | 指定旋轉(zhuǎn)圖像時(shí)的旋轉(zhuǎn)角度。請注意,PHP逆時(shí)針旋轉(zhuǎn),因此向右旋轉(zhuǎn)90度必須指定為270。 | X |
X_AXIS | 沒有 | 沒有 | 設(shè)置圖像裁剪的X坐標(biāo)(以像素為單位)。例如,設(shè)置為30將從左側(cè)裁剪30像素的圖像。 | C |
Y_AXIS | 沒有 | 沒有 | 設(shè)置圖像裁剪的Y坐標(biāo)(以像素為單位)。例如,設(shè)置為30會從頂部裁剪一個(gè)30像素的圖像。 | C |
如果您不想使用上述方法設(shè)置首選項(xiàng),則可以將它們放入配置文件中。只需創(chuàng)建一個(gè)名為image_lib.php的新文件,在該文件中添加$ config數(shù)組。然后將該文件保存在config / image_lib.php中,并自動(dòng)使用它。如果將$this->image_lib->initialize()
首選項(xiàng)保存在配置文件中,則不需要使用該方法。
水印功能需要GD / GD2庫。
您可以使用兩種類型的水?。?/p>
文本:將使用文本生成水印消息,或者使用您指定的True Type字體,或使用GD庫支持的原生文本輸出。如果使用True Type版本,則必須使用True Type支持編譯GD安裝(大部分是,但不是全部)。
重疊:水印消息將通過在源圖像上疊加包含水印的圖像(通常是透明的PNG或GIF)來生成。
與其他方法(調(diào)整大小,裁剪和旋轉(zhuǎn))一樣,水印的一般處理過程包括設(shè)置與您打算執(zhí)行的操作相對應(yīng)的首選項(xiàng),然后調(diào)用水印功能。這里是一個(gè)例子:
$config['source_image'] = '/path/to/image/mypic.jpg';$config['wm_text'] = 'Copyright 2006 - John Doe';$config['wm_type'] = 'text';$config['wm_font_path'] = './system/fonts/texb.ttf';$config['wm_font_size'] = '16';$config['wm_font_color'] = 'ffffff';$config['wm_vrt_alignment'] = 'bottom';$config['wm_hor_alignment'] = 'center';$config['wm_padding'] = '20';$this->image_lib->initialize($config);$this->image_lib->watermark();
上面的例子將使用一個(gè)16像素的True Type字體來創(chuàng)建文本“Copyright 2006 - John Doe”。水印將位于圖像的底部/中心,距離圖像底部20個(gè)像素。
注意
為了允許圖像類進(jìn)行任何處理,圖像文件必須具有“寫入”文件權(quán)限。例如,777。
此表顯示可用于這兩種類型的水?。ㄎ谋净蚋采w)
偏愛 | 默認(rèn)值 | 選項(xiàng) | 描述 |
---|---|---|---|
wm_type | 文本 | 文本,覆蓋 | 設(shè)置應(yīng)該使用的水印類型。 |
source_image | 沒有 | 沒有 | 設(shè)置源圖像名稱/路徑。路徑必須是相對或絕對的服務(wù)器路徑,而不是URL。 |
dynamic_output | 假 | TRUE / FALSE(布爾) | 確定新圖像文件是寫入磁盤還是動(dòng)態(tài)生成。注意:如果您選擇動(dòng)態(tài)設(shè)置,則一次只能顯示一個(gè)圖像,并且無法將其定位到頁面上。它只是將原始圖像動(dòng)態(tài)地輸出到瀏覽器以及圖像標(biāo)題。 |
質(zhì)量 | 90% | 1 - 100% | 設(shè)置圖像的質(zhì)量。質(zhì)量越高,文件大小越大。 |
wm_padding | 沒有 | 一個(gè)號碼 | 填充量(以像素為單位),將應(yīng)用于水印以將其設(shè)置為遠(yuǎn)離圖像邊緣。 |
wm_vrt_alignment | 底部 | 頂部,中部,底部 | 設(shè)置水印圖像的垂直對齊。 |
wm_hor_alignment | 中央 | 左,中,右 | 設(shè)置水印圖像的水平對齊。 |
wm_hor_offset | 沒有 | 沒有 | 您可以指定應(yīng)用于水印位置的水平偏移量(以像素為單位)。偏移通常會將水印移動(dòng)到右側(cè),除非您將對齊設(shè)置為“右側(cè)”,則偏移值會將水印朝向圖像的左側(cè)移動(dòng)。 |
wm_vrt_offset | 沒有 | 沒有 | 您可以指定應(yīng)用于水印位置的垂直偏移量(以像素為單位)。偏移通常會將水印向下移動(dòng),除非您將對齊設(shè)置為“底部”,則偏移值會將水印朝向圖像頂部移動(dòng)。 |
此表顯示了可用于文本類型水印的首選項(xiàng)。
偏愛 | 默認(rèn)值 | 選項(xiàng) | 描述 |
---|---|---|---|
wm_text | 沒有 | 沒有 | 您希望顯示為水印的文字。通常這將是版權(quán)聲明。 |
wm_font_path | 沒有 | 沒有 | 您希望使用的True Type字體的服務(wù)器路徑。如果您不使用此選項(xiàng),則將使用原生GD字體。 |
wm_font_size | 16 | 沒有 | 文本的大小。注意:如果您沒有使用上面的True Type選項(xiàng),則數(shù)字的設(shè)置范圍為1 - 5.否則,您可以使用任何有效的像素大小來顯示所用的字體。 |
wm_font_color | FFFFFF | 沒有 | 字體顏色,以十六進(jìn)制指定。支持完整的6長度(即993300)和短三字縮寫版本(即fff)。 |
wm_shadow_color | 沒有 | 沒有 | 投影的顏色,以十六進(jìn)制指定。如果將此留空,則不會使用投影。支持完整的6長度(即993300)和短三字縮寫版本(即fff)。 |
wm_shadow_distance | 3 | 沒有 | 投影陰影應(yīng)顯示的字體的距離(以像素為單位)。 |
此表顯示了可用于覆蓋類型水印的首選項(xiàng)。
偏愛 | 默認(rèn)值 | 選項(xiàng) | 描述 |
---|---|---|---|
wm_overlay_path | 沒有 | 沒有 | 您希望用作水印的圖像的服務(wù)器路徑。僅當(dāng)您使用覆蓋方法時(shí)才需要。 |
wm_opacity | 50 | 1 - 100 | 圖像不透明。您可以指定水印圖像的不透明度(即透明度)。這使得水印變得微弱,并且不能完全遮掩背后的原始圖像的細(xì)節(jié)。50%的不透明度是典型的。 |
wm_x_transp | 4 | 一個(gè)號碼 | 如果您的水印圖像是PNG或GIF圖像,您可以在圖像上指定一種顏色為“透明”。此設(shè)置(以及下一個(gè))將允許您指定該顏色。這可以通過指定圖像中的“X”和“Y”坐標(biāo)像素(從左上角開始測量)來進(jìn)行,該像素對應(yīng)于表示要透明的顏色的像素。 |
wm_y_transp | 4 | 一個(gè)號碼 | 與以前的設(shè)置一起,這允許您指定代表想要透明顏色的像素的坐標(biāo)。 |
class CI_Image_libinitialize([$props = array()])
參數(shù): | $ props(array) - 圖像處理首選項(xiàng) |
---|---|
返回: | 成功為TRUE,在無效設(shè)置的情況下為FALSE |
返回類型: | 布爾 |
$ props(array) - 圖像處理首選項(xiàng)
Returns: TRUE on success, FALSE in case of invalid settings
Return type: bool
Initializes the class for processing an image.
resize()
返回: | 成功為TRUE,失敗為FALSE |
---|---|
返回類型: | 布爾 |
如果只指定了新的圖像名稱,它將被放置在與原始文件相同的文件夾中
如果僅指定了路徑,則新圖像將放置在與原始圖像名稱相同的目的地中。
如果指定了路徑和圖像名稱,則它將放置在其自己的目的地,并給出新名稱。
調(diào)整原始圖像的大小
如果使用上面列出的兩個(gè)首選項(xiàng)(create_thumb和new_image),則調(diào)整大小方法將改為將原始圖像作為處理目標(biāo)。
crop()
返回: | 成功為TRUE,失敗為FALSE |
---|---|
返回類型: | 布爾 |
rotate()
返回: | 成功為TRUE,失敗為FALSE |
---|---|
返回類型: | 布爾 |
90 - 逆時(shí)針旋轉(zhuǎn)90度。
180 - 逆時(shí)針旋轉(zhuǎn)180度。
270 - 逆時(shí)針旋轉(zhuǎn)270度。
hor - 水平翻轉(zhuǎn)圖像。
vrt - 垂直翻轉(zhuǎn)圖像。
以下是顯示如何旋轉(zhuǎn)圖像的示例:
$config'image_library' = 'netpbm'; $config'library_path' = '/usr/bin/'; $config'source_image' = '/path/to/image/mypic.jpg'; $config'rotation_angle' = 'hor'; $this->image_lib->initialize($config); if ( ! $this->image_lib->rotate()) { echo $this->image_lib->display_errors(); }
watermark()
返回: | 成功為TRUE,失敗為FALSE |
---|---|
返回類型: | 布爾 |
clear()
Return type: | void |
---|
display_errors([$open = '<p>[, $close = '</p>']])
參數(shù): | $ open(string) - 錯(cuò)誤消息打開標(biāo)記$ close(string) - 錯(cuò)誤消息關(guān)閉標(biāo)記 |
---|---|
返回: | 錯(cuò)誤消息 |
返回類型: | 串 |
$ open(string) - 錯(cuò)誤信息開啟標(biāo)簽
$ close(string) - 錯(cuò)誤信息關(guān)閉標(biāo)簽
Returns: Error messages
Return type: string
Returns all detected errors formatted as a string.
echo $this->image_lib->display_errors();