首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

图像处理类 | Image Manipulation Class

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

  • 图像大小调整
  • 缩略图创建
  • 图像裁剪
  • 图像旋转
  • 图像水印

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

注意

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

  • 初始化类
    • 处理图像
    • 处理方法
    • 优先
    • 在配置文件中设置首选项
  • 图像水印
    • 两种类型的水印
    • 为图像加水印
    • 水印首选项
      • 文本首选项
      • 覆盖首选项
  • 类参考

初始化类

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

代码语言:javascript
复制
$this->load->library('image_lib');

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

处理图像

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

代码语言:javascript
复制
$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。如果失败,您可以使用此功能检索错误消息:

代码语言:javascript
复制
echo $this->image_lib->display_errors();

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

代码语言:javascript
复制
if ( ! $this->image_lib->resize())
{
        echo $this->image_lib->display_errors();
}

注意

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

代码语言:javascript
复制
$this->image_lib->display_errors('<p>', '</p>');

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)来生成。

为图像加水印

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

代码语言:javascript
复制
$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) - 图像处理首选项
代码语言:txt
复制
Returns:  TRUE on success, FALSE in case of invalid settings
代码语言:txt
复制
Return type:  bool
代码语言:txt
复制
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 = '<p>[, $close = '</p>']])

参数:

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

返回:

错误消息

返回类型:

  • $ openstring) - 错误信息开启标签
  • $ closestring) - 错误信息关闭标签
代码语言:txt
复制
Returns:  Error messages
代码语言:txt
复制
Return type:  string
代码语言:txt
复制
Returns all detected errors formatted as a string.

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

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com