图像处理类 | Image Manipulation Class

Image Manipulation Class

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->调整()

这些方法在成功时返回布尔值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('<p>', '</p>'

Preferences

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

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

可用性图例:

  • R - 图像大小调整

偏爱默认值选项描述可用性
image_libraryGD2GD,GD2,ImageMagick,NetPBM设置要使用的图像库。R,C,X,W
LIBRARY_PATH没有没有将服务器路径设置为ImageMagick或NetPBM库。如果您使用这些库中的任何一个,则必须提供路径。R,C,XR,C,S,W
source_image没有没有设置源图像名称/路径。路径必须是相对或绝对的服务器路径,而不是URL。
dynamic_outputTRUE / FALSE(布尔)确定新图像文件是写入磁盘还是动态生成。注意:如果您选择动态设置,则一次只能显示一个图像,并且无法将其定位到页面上。它只是将原始图像动态地输出到浏览器以及图像标题。R,C,X,W
file_permissions0644(整数)将文件系统权限应用于生成的映像文件,并将其写入磁盘。警告:使用八进制整数表示法!R,C,X,W
质量90%1 - 100%设置图像的质量。质量越高,文件大小越大。R,C,X,W
新图片没有没有设置目标图像名称/路径。创建图像副本时,您将使用此首选项。路径必须是相对或绝对的服务器路径,而不是URL。R,C,X,W
宽度没有没有设置您希望将图像设置为的宽度。R,C
高度没有没有设置您希望将图像设置为的高度。R,C
create_thumbTRUE / 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安装(大部分是,但不是全部)。

为图像加水印

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

$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_outputTRUE / 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_size16没有文本的大小。注意:如果您没有使用上面的True Type选项,则数字的设置范围为1 - 5.否则,您可以使用任何有效的像素大小来显示所用的字体。
wm_font_colorFFFFFF没有字体颜色,以十六进制指定。支持完整的6长度(即993300)和短三字缩写版本(即fff)。
wm_shadow_color没有没有投影的颜色,以十六进制指定。如果将此留空,则不会使用投影。支持完整的6长度(即993300)和短三字缩写版本(即fff)。
wm_shadow_distance3没有投影阴影应显示的字体的距离(以像素为单位)。

覆盖首选项

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

偏爱默认值选项描述
wm_overlay_path没有没有您希望用作水印的图像的服务器路径。仅当您使用覆盖方法时才需要。
wm_opacity501 - 100图像不透明。您可以指定水印图像的不透明度(即透明度)。这使得水印变得微弱,并且不能完全遮掩背后的原始图像的细节。50%的不透明度是典型的。
wm_x_transp4一个号码如果您的水印图像是PNG或GIF图像,您可以在图像上指定一种颜色为“透明”。此设置(以及下一个)将允许您指定该颜色。这可以通过指定图像中的“X”和“Y”坐标像素(从左上角开始测量)来进行,该像素对应于表示要透明的颜色的像素。
wm_y_transp4一个号码与以前的设置一起,这允许您指定代表想要透明颜色的像素的坐标。

类参考

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
返回类型:布尔

  • 90 - 逆时针旋转90度。

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

$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>']])

参数:$ open(string) - 错误消息打开标记$ close(string) - 错误消息关闭标记
返回:错误消息
返回类型:

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

Returns: Error messages

Return type: string

Returns all detected errors formatted as a string.

echo $this->image_lib->display_errors(