CodeIgniter Image Lib 图像处理类使用指南
深入解析 CodeIgniter 框架中的 image_lib 图像处理类,详细讲解如何配置 GD2 库来实现图像的缩放、裁剪、旋转以及添加文字或叠加层水印。通过具体的 Controller 示例和参数说明,帮助开发者快速上手并解决常见的图像处理需求。
1. 类结构与初始化准备
在 CodeIgniter 中使用图像处理功能,首先需要加载 image_lib 库。以下是一个基础控制器类的结构示例,它演示了如何在构造函数中加载库,并预留了不同图像处理功能的函数入口。
<?php
class Image extends CI_Controller { // 建议继承 CI_Controller
public function __construct()
{
parent::__construct();
$this->load->library('image_lib');
}
public function index()
{
// 首页展示支持的图像处理类型
echo '本控制器支持以下操作:' . "<br>"
. '* 调整图像大小 (resize)' . "<br>"
. '* 创建缩略图 (resize with thumb)' . "<br>"
. '* 图像裁剪 (crop)' . "<br>"
. '* 图像旋转 (rotate)' . "<br>"
. '* 添加图像水印 (watermark)';
}
}
?>
2. 调整图像尺寸与生成缩略图
调整图像大小是 Image Lib 最常用的功能之一。可以通过配置数组来指定源图像、目标尺寸、质量以及是否保留比例等关键参数。
第1步:配置 Resize 参数
在进行任何处理前,必须正确配置 $config 数组。以下参数对于 resize() 方法是核心:
image_library: 设置为'gd2'(必须)。source_image: 原始图像的路径(必须)。width/height: 目标宽度和高度(必须)。maintain_ratio: 设置为 TRUE 以自动调整另一维度以保持宽高比。create_thumb: 设置为 TRUE 可生成缩略图,否则将覆盖或修改原图/新图文件。
第2步:执行 Resize 操作
调用 initialize() 传入配置后,执行 resize()。若成功返回 true,可通过 display_errors() 获取错误信息。
// resize() 方法示例
public function resize()
{
$config['image_library'] = 'gd2';
$config['source_image'] = '/path/to/image.jpg'; // 请替换为实际相对路径
$config['new_image'] = '/path/to/new_image.jpg'; // 若不指定且 create_thumb=FALSE,则修改源文件
$config['quality'] = '90%';
$config['width'] = 575;
$config['height'] = 350;
$config['maintain_ratio'] = TRUE; // 维持原始纵横比
// 如果 create_thumb 为 FALSE 且指定 new_image,则文件名由 new_image 决定
// 如果 create_thumb 为 TRUE,默认文件名会在原文件名后添加 _thumb
$config['create_thumb'] = TRUE;
$config['thumb_marker'] = '_thumb';
$this->image_lib->initialize($config);
if (!$this->image_lib->resize()) {
echo $this->image_lib->display_errors();
} else {
echo "Resize successful.";
}
}
3. 图像精确裁剪
如果需要从图像中截取特定区域,可以使用裁剪功能。裁剪需要明确指定起始坐标 (x_axis, y_axis) 和目标尺寸。
第1步:配置 Crop 参数
x_axis/y_axis: 裁剪区域的左上角坐标(像素值,必须)。width/height: 裁剪后的最终尺寸(必须)。maintain_ratio: 裁剪时通常设为 FALSE,除非希望按比例缩放后再次裁剪。
第2步:执行 Crop 操作
注意:裁剪会直接改变图像内容,建议在测试时使用新的输出路径以防误删原图数据。
// crop() 方法示例
public function crop()
{
$config['image_library'] = 'gd2';
$config['source_image'] = '/path/to/source.jpg';
$config['new_image'] = '/path/to/cropped_result.jpg';
$config['width'] = 75;
$config['height'] = 50;
$config['x_axis'] = '30'; // 从左边缘开始的像素偏移
$config['y_axis'] = '40'; // 从上边缘开始的像素偏移
$config['maintain_ratio'] = TRUE; // 根据具体需求调整,通常为FALSE以精确匹配尺寸
$this->image_lib->initialize($config);
if (!$this->image_lib->crop()) {
echo $this->image_lib->display_errors();
} else {
echo "Crop successful.";
}
}
4. 图像旋转与翻转
CodeIgniter 支持几种预设的旋转角度和翻转模式,通过 rotation_angle 参数控制。
第1步:配置 Rotate 参数
可用的 rotation_angle 值包括:
90,180,270: 逆时针旋转相应角度。vrt: 竖向翻转 (Vertical Mirror)。hor: 横向翻转 (Horizontal Mirror)。
// rotate() 方法示例
public function rotate()
{
$config['image_library'] = 'gd2';
$config['source_image'] = '/path/to/source.jpg';
$config['new_image'] = '/path/to/rotated.jpg';
$config['rotation_angle'] = 'vrt'; // 可选: 90, 180, 270, vrt, hor
$this->image_lib->initialize($config);
if (!$this->image_lib->rotate()) {
echo $this->image_lib->display_errors();
} else {
echo "Rotate successful.";
}
}
5. 添加水印
水印功能分为两种类型:text(文字水印)和 overlay(图像水印)。两者共享部分位置参数,但各自有特定的配置项。
第1步:通用水印配置
wm_type: 设置为'text'或'overlay'。wm_vrt_alignment/wm_hor_alignment: 水印在垂直和水平方向的对齐方式(top/bottom/middle和left/right/center)。wm_vrt_offset/wm_hor_offset: 在对齐基础上额外的像素偏移。wm_padding: 水印与图像边缘的最小间距(像素)。
第2步:文字水印特有配置
wm_text: 显示的水印文字内容。wm_font_path: TTF 字体文件的绝对路径(必须存在,否则报错)。wm_font_size: 字体大小。wm_font_color: 十六进制颜色代码(如FFFFFF)。wm_shadow_color: 阴影颜色。wm_shadow_distance: 阴影模糊距离。
第3步:图像水印特有配置
wm_overlay_path: 作为水印的图片路径(必须是 PNG/GIF)。wm_opacity: 透明度(0-100)。wm_x_transp/wm_y_transp: 透明色通道阈值(用于移除水印背景)。
第4步:执行 Watermark
以下是文字水印的实现示例:
// watermark_text() 方法示例
public function watermark_text()
{
$config['image_library'] = 'gd2';
$config['source_image'] = '/path/to/image.jpg';
$config['wm_type'] = 'text'; // 使用文字水印
$config['wm_text'] = 'Copyright 2023 - Your Site';
$config['wm_font_path'] = '/path/to/fonts/myfont.ttf'; // 确保路径正确且文件存在
$config['wm_font_size'] = '16';
$config['wm_font_color'] = 'ffffff';
$config['wm_vrt_alignment'] = 'bottom';
$config['wm_hor_alignment'] = 'right';
$config['wm_padding'] = '20';
$this->image_lib->initialize($config);
$this->image_lib->watermark();
}
以下是图像叠加水印的实现示例:
// watermark_overlay() 方法示例
public function watermark_overlay()
{
$config['image_library'] = 'gd2';
$config['source_image'] = '/path/to/image.jpg';
$config['wm_type'] = 'overlay'; // 使用图像水印
$config['wm_overlay_path'] = '/path/to/logo.png';
$config['wm_opacity'] = '50';
$config['wm_vrt_alignment'] = 'middle';
$config['wm_hor_alignment'] = 'center';
$this->image_lib->initialize($config);
$this->image_lib->watermark();
}
以上就是 CodeIgniter image_lib 图像处理类设置与使用的详细内容,更多关于 CodeIgniter 框架开发技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









