direktori cari
Array Array Helper Benchmarking Benchmarking Class Caching Caching Driver Calendaring Calendaring Class CAPTCHA CAPTCHA Helper Config Config Class Cookie Cookie Helper Database Connecting to your Database Custom Function Calls Database Caching Class Database Configuration Database Forge Class Database Metadata Database Quick Start: Example Code Database Reference Database Utility Class DB Driver Reference Generating Query Results Queries Query Builder Class Query Helper Methods Transactions Date Date Helper Directory Directory Helper Download Download Helper Email Email Class Email Helper Encrypt Encrypt Class Encryption Encryption Library File File Helper File Uploading File Uploading Class Form Form Helper Form Validation Form Validation FTP FTP Class Functions compatibility_functions common_functions HTML HTML Helper HTML Table HTML Table Class Image Manipulation Image Manipulation Class Inflector Inflector Helper Input Input Class Javascript Javascript Class Language Language Class Language Helper Loader Loader Class Migrations Migrations Class Number Number Helper Output Output Class Pagination Pagination Class Path Path Helper Security Security Class Security Helper Session Session Library Shopping Cart Shopping Cart Class Smiley Smiley Helper String String Helper Template Parser Template Parser Class Text Text Helper Trackback Trackback Class Typography Typography Class Typography Helper Unit Testing Unit Testing Class URI URL User Agent XML XML-RPC and XML-RPC Server Zip Encoding Zip Encoding Class XML-RPC and XML-RPC Server Classes XML Helper User Agent Class URL Helper URI Class
watak

CodeIgniter的Image Manipulation类允许您执行以下操作:

  • 图像大小调整

  • 缩略图创建

  • 图像裁剪

  • 图像旋转

  • 图像水印

所有三个主要的图像库都支持:GD / GD2,NetPBM和ImageMagick

注意

水印只能使用GD / GD2库。另外,即使支持其他库,为了使脚本计算图像属性,GD也是必需的。但是,图像处理将在您指定的库中执行。

  • 初始化类

    • 处理图像

    • 处理方法

    • 优先

    • 在配置文件中设置首选项

  • 图像水印

    • 文本首选项

    • 覆盖首选项

    • 两种类型的水印

    • 为图像加水印

    • 水印首选项

  • 类参考

初始化类

像CodeIgniter中的大多数其他类一样,image类在您的控制器中使用$ this-> load-> library函数进行初始化:

$this->load->library('image_lib');

一旦library被加载,它将准备好使用。您将用来调用所有函数的图像库对象是:$this->image_lib

处理图像

无论您想要执行的处理类型(调整大小,裁剪,旋转还是加水印),一般过程都是相同的。您将设置与您打算执行的操作相对应的某些首选项,然后调用四种可用处理函数之一。例如,要创建图像缩略图,您需要执行以下操作:

$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函数查找位于source_image文件夹中的名为mypic.jpg的图像,然后使用GD2 image_library创建一个75×50像素的缩略图。由于启用了maintain_ratio选项,拇指将尽可能接近目标宽度和高度,同时保留原始高宽比。缩略图将被称为mypic_thumb.jpg,并位于与source_image相同的级别。

注意

为了允许图像类进行任何处理,包含图像文件的文件夹必须具有写入权限。

注意

对于某些操作,图像处理可能需要大量的服务器内存。如果您在处理图像时遇到内存不足错误,则可能需要限制它们的最大尺寸,和/或调整PHP内存限制。

处理方法

有四种可用的处理方法:

  • $这个 - > image_lib->调整()

  • $这个 - > image_lib->作物()

  • $这个 - > image_lib->旋转()

  • $这个 - > image_lib->水印()

这些方法在成功时返回布尔值TRUE,在失败时返回FALSE。如果失败,您可以使用此功能检索错误消息:

echo $this->image_lib->display_errors();

一个好的做法是有条件地使用处理函数,在失败时显示错误,如下所示:

if ( ! $this->image_lib->resize()){ echo $this->image_lib->display_errors();}

注意

您可以选择指定要应用于错误的HTML格式,方法是在函数中提交开始/结束标记,如下所示:

$this->image_lib->display_errors('

', '

');

Preferences

下面介绍的首选项可让您调整图像处理以满足您的需求。

请注意,并非所有首选项都可用于每个功能。例如,x / y轴首选项仅适用于图像裁剪。同样,宽度和高度偏好对裁剪没有影响。“可用性”列指示哪些功能支持给定的偏好。

可用性图例:

  • R - 图像大小调整

  • C - 图像裁剪

  • X - 图像旋转

  • W - 图像水印

偏爱

默认值

选项

描述

可用性

image_library

GD2

GD,GD2,ImageMagick,NetPBM

设置要使用的图像库。

R,C,X,W

LIBRARY_PATH

没有

没有

将服务器路径设置为ImageMagick或NetPBM库。如果您使用这些库中的任何一个,则必须提供路径。

R,C,XR,C,S,W

source_image

没有

没有

设置源图像名称/路径。路径必须是相对或绝对的服务器路径,而不是URL。


dynamic_output

TRUE / FALSE(布尔)

确定新图像文件是写入磁盘还是动态生成。注意:如果您选择动态设置,则一次只能显示一个图像,并且无法将其定位到页面上。它只是将原始图像动态地输出到浏览器以及图像标题。

R,C,X,W

file_permissions

0644

(整数)

将文件系统权限应用于生成的映像文件,并将其写入磁盘。警告:使用八进制整数表示法!

R,C,X,W

质量

90%

1 - 100%

设置图像的质量。质量越高,文件大小越大。

R,C,X,W

新图片

没有

没有

设置目标图像名称/路径。创建图像副本时,您将使用此首选项。路径必须是相对或绝对的服务器路径,而不是URL。

R,C,X,W

宽度

没有

没有

设置您希望将图像设置为的宽度。

R,C

高度

没有

没有

设置您希望将图像设置为的高度。

R,C

create_thumb

TRUE / FALSE(布尔)

告诉图像处理功能创建一个拇指。

[R

thumb_marker

_拇指

没有

指定缩略图指示器。它将被插入文件扩展名之前,所以mypic.jpg会成为mypic_thumb.jpg

[R

maintain_ratio

真正

TRUE / FALSE(布尔)

指定在调整大小或使用硬值时是否保持原始宽高比。

R,C

master_dim

汽车

自动,宽度,高度

指定调整大小或创建缩略图时要用作主轴的内容。例如,假设您要将图像大小调整为100 X 75像素。如果源图像尺寸不允许对这些尺寸进行完美调整大小,则此设置将确定应将哪个轴用作硬值。“自动”根据图像是否高于宽度自动设置轴,反之亦然。

[R

rotation_angle

没有

90,180,270,花园,hor

指定旋转图像时的旋转角度。请注意,PHP逆时针旋转,因此向右旋转90度必须指定为270。

X

X_AXIS

没有

没有

设置图像裁剪的X坐标(以像素为单位)。例如,设置为30将从左侧裁剪30像素的图像。

C

Y_AXIS

没有

没有

设置图像裁剪的Y坐标(以像素为单位)。例如,设置为30会从顶部裁剪一个30像素的图像。

C

在配置文件中设置首选项

如果您不想使用上述方法设置首选项,则可以将它们放入配置文件中。只需创建一个名为image_lib.php的新文件,在该文件中添加$ config数组。然后将该文件保存在config / image_lib.php中,并自动使用它。如果将$this->image_lib->initialize()首选项保存在配置文件中,则不需要使用该方法。

图像水印

水印功能需要GD / GD2库。

两种类型的水印

您可以使用两种类型的水印:

  • 文本:将使用文本生成水印消息,或者使用您指定的True Type字体,或使用GD库支持的原生文本输出。如果使用True Type版本,则必须使用True Type支持编译GD安装(大部分是,但不是全部)。

  • 重叠:水印消息将通过在源图像上叠加包含水印的图像(通常是透明的PNG或GIF)来生成。

为图像加水印

与其他方法(调整大小,裁剪和旋转)一样,水印的一般处理过程包括设置与您打算执行的操作相对应的首选项,然后调用水印功能。这里是一个例子:

$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();

上面的例子将使用一个16像素的True Type字体来创建文本“Copyright 2006 - John Doe”。水印将位于图像的底部/中心,距离图像底部20个像素。

注意

为了允许图像类进行任何处理,图像文件必须具有“写入”文件权限。例如,777。

水印首选项

此表显示可用于这两种类型的水印(文本或覆盖)

偏爱

默认值

选项

描述

wm_type

文本

文本,覆盖

设置应该使用的水印类型。

source_image

没有

没有

设置源图像名称/路径。路径必须是相对或绝对的服务器路径,而不是URL。

dynamic_output

TRUE / FALSE(布尔)

确定新图像文件是写入磁盘还是动态生成。注意:如果您选择动态设置,则一次只能显示一个图像,并且无法将其定位到页面上。它只是将原始图像动态地输出到浏览器以及图像标题。

质量

90%

1 - 100%

设置图像的质量。质量越高,文件大小越大。

wm_padding

没有

一个号码

填充量(以像素为单位),将应用于水印以将其设置为远离图像边缘。

wm_vrt_alignment

底部

顶部,中部,底部

设置水印图像的垂直对齐。

wm_hor_alignment

中央

左,中,右

设置水印图像的水平对齐。

wm_hor_offset

没有

没有

您可以指定应用于水印位置的水平偏移量(以像素为单位)。偏移通常会将水印移动到右侧,除非您将对齐设置为“右侧”,则偏移值会将水印朝向图像的左侧移动。

wm_vrt_offset

没有

没有

您可以指定应用于水印位置的垂直偏移量(以像素为单位)。偏移通常会将水印向下移动,除非您将对齐设置为“底部”,则偏移值会将水印朝向图像顶部移动。

文本首选项

此表显示了可用于文本类型水印的首选项。

偏爱

默认值

选项

描述

wm_text

没有

没有

您希望显示为水印的文字。通常这将是版权声明。

wm_font_path

没有

没有

您希望使用的True Type字体的服务器路径。如果您不使用此选项,则将使用原生GD字体。

wm_font_size

16

没有

文本的大小。注意:如果您没有使用上面的True Type选项,则数字的设置范围为1 - 5.否则,您可以使用任何有效的像素大小来显示所用的字体。

wm_font_color

FFFFFF

没有

字体颜色,以十六进制指定。支持完整的6长度(即993300)和短三字缩写版本(即fff)。

wm_shadow_color

没有

没有

投影的颜色,以十六进制指定。如果将此留空,则不会使用投影。支持完整的6长度(即993300)和短三字缩写版本(即fff)。

wm_shadow_distance

3

没有

投影阴影应显示的字体的距离(以像素为单位)。

覆盖首选项

此表显示了可用于覆盖类型水印的首选项。

偏爱

默认值

选项

描述

wm_overlay_path

没有

没有

您希望用作水印的图像的服务器路径。仅当您使用覆盖方法时才需要。

wm_opacity

50

1 - 100

图像不透明。您可以指定水印图像的不透明度(即透明度)。这使得水印变得微弱,并且不能完全遮掩背后的原始图像的细节。50%的不透明度是典型的。

wm_x_transp

4

一个号码

如果您的水印图像是PNG或GIF图像,您可以在图像上指定一种颜色为“透明”。此设置(以及下一个)将允许您指定该颜色。这可以通过指定图像中的“X”和“Y”坐标像素(从左上角开始测量)来进行,该像素对应于表示要透明的颜色的像素。

wm_y_transp

4

一个号码

与以前的设置一起,这允许您指定代表想要透明颜色的像素的坐标。

类参考

class CI_Image_libinitialize([$props = array()])

参数:

$ props(array) - 图像处理首选项

返回:

成功为TRUE,在无效设置的情况下为FALSE

返回类型:

布尔

  • $ propsarray) - 图像处理首选项

Returns: TRUE on success, FALSE in case of invalid settings
Return type: bool
Initializes the class for processing an image.

resize()

返回:

成功为TRUE,失败为FALSE

返回类型:

布尔

  • 如果只指定了新的图像名称,它将被放置在与原始文件相同的文件夹中

  • 如果仅指定了路径,则新图像将放置在与原始图像名称相同的目的地中。

  • 如果指定了路径和图像名称,则它将放置在其自己的目的地,并给出新名称。

调整原始图像的大小

如果使用上面列出的两个首选项(create_thumb和new_image),则调整大小方法将改为将原始图像作为处理目标。

crop()

返回:

成功为TRUE,失败为FALSE

返回类型:

布尔

rotate()

返回:

成功为TRUE,失败为FALSE

返回类型:

布尔

  1. 90 - 逆时针旋转90度。

  2. 180 - 逆时针旋转180度。

  3. 270 - 逆时针旋转270度。

  4. hor - 水平翻转图像。

  5. vrt - 垂直翻转图像。

以下是显示如何旋转图像的示例:

$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 = '

[, $close = '

']])

参数:

$ open(string) - 错误消息打开标记$ close(string) - 错误消息关闭标记

返回:

错误消息

返回类型:

  • $ openstring) - 错误信息开启标签

  • $ closestring) - 错误信息关闭标签

Returns: Error messages
Return type: string
Returns all detected errors formatted as a string.

echo $this->image_lib->display_errors();

Artikel sebelumnya: Artikel seterusnya: