图像处理类 | 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_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安装(大部分是,但不是全部)。
为图像加水印
与其他方法(调整大小,裁剪和旋转)一样,水印的一般处理过程包括设置与您打算执行的操作相对应的首选项,然后调用水印功能。这里是一个例子:
$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 |
返回类型: | 布尔 |
$ props
(array
) - 图像处理首选项
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) - 错误消息关闭标记 |
---|---|
返回: | 错误消息 |
返回类型: | 串 |
$ open
(string
) - 错误信息开启标签
Returns: Error messages
Return type: string
Returns all detected errors formatted as a string.
echo $this->image_lib->display_errors(