[TOC]
# 图像
`Phalcon\Image` 是允许您操作图像文件的组件。
可以对同一图像对象执行多个操作。
## 适配器
该组件使用适配器来封装特定的图像操纵器程序。支持以下图像处理程序:
| 类 | 描述 |
| ---------------------------------- | ----------------------------------------------------------------------------------- |
| `Phalcon\Image\Adapter\Gd` | 需要 [GD PHP extension](http://php.net/manual/en/book.image.php) |
| `Phalcon\Image\Adapter\Imagick` | 需要 [ImageMagick PHP extension](http://php.net/manual/en/book.imagick.php) |
### 工厂
使用适配器选项加载`Image Adapter`类。
```php
<?php
use Phalcon\Image\Factory;
$options = [
'width' => 200,
'height' => 200,
'file' => 'upload/test.jpg',
'adapter' => 'imagick',
];
$image = Factory::load($options);
```
### 实现自己的适配器
必须实现`Phalcon\Image\AdapterInterface`接口才能创建自己的图像适配器或扩展现有的图像适配器。
## 保存和渲染图像
在我们开始使用图像组件的各种功能之前,值得了解如何保存和渲染这些图像。
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
// ...
// Overwrite the original image
$image->save();
```
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
// ...
// Save to 'new-image.jpg'
$image->save('new-image.jpg');
```
您还可以更改图像的格式:
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
// ...
// Save as a PNG file
$image->save('image.png');
```
保存为JPEG时,您还可以将质量指定为第二个参数:
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
// ...
// Save as a JPEG with 80% quality
$image->save('image.jpg', 80);
```
## 调整图像大小
有几种调整大小的模式:
* `\Phalcon\Image::WIDTH`
* `\Phalcon\Image::HEIGHT`
* `\Phalcon\Image::NONE`
* `\Phalcon\Image::TENSILE`
* `\Phalcon\Image::AUTO`
* `\Phalcon\Image::INVERSE`
* `\Phalcon\Image::PRECISE`
### `\Phalcon\Image::WIDTH`
将自动生成高度以保持比例相同;如果指定高度,则会被忽略。
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
$image->resize(
300,
null,
\Phalcon\Image::WIDTH
);
$image->save('resized-image.jpg');
```
### `\Phalcon\Image::HEIGHT`
将自动生成宽度以保持比例相同;如果指定宽度,则会被忽略。
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
$image->resize(
null,
300,
\Phalcon\Image::HEIGHT
);
$image->save('resized-image.jpg');
```
### `\Phalcon\Image::NONE`
* `NONE` 常数忽略原始图像比率。
* 宽度和高度都不是必需的。
* 如果未指定尺寸,则将使用原始尺寸。
* 如果新比例与原始比例不同,则图像可能会扭曲和拉伸。
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
$image->resize(
400,
200,
\Phalcon\Image::NONE
);
$image->save('resized-image.jpg');
```
### `\Phalcon\Image::TENSILE`
* 与 `NONE` 常数类似,`TENSILE` 常量忽略原始图像比率。
* 宽度和高度都是必需的。
* 如果新比例与原始比例不同,则图像可能会扭曲和拉伸。
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
$image->resize(
400,
200,
\Phalcon\Image::TENSILE
);
$image->save('resized-image.jpg');
```
## 裁剪图像
例如,要从图像中心获得100px×100px的正方形:
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
$width = 100;
$height = 100;
$offsetX = (($image->getWidth() - $width) / 2);
$offsetY = (($image->getHeight() - $height) / 2);
$image->crop($width, $height, $offsetX, $offsetY);
$image->save('cropped-image.jpg');
```
## 旋转图像
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
// Rotate an image by 90 degrees clockwise
$image->rotate(90);
$image->save('rotated-image.jpg');
```
## 翻转图像
`\Phalcon\Image::HORIZONTAL`常量)和垂直翻转图像(使用`\Phalcon\Image::VERTICAL`常量):
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
// Flip an image horizontally
$image->flip(
\Phalcon\Image::HORIZONTAL
);
$image->save('flipped-image.jpg');
```
## 锐化图像
`sharpen()` 方法采用单个参数 - 0(无效果)和100(非常尖锐)之间的整数:
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
$image->sharpen(50);
$image->save('sharpened-image.jpg');
```
## 为图像添加水印
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
$watermark = new \Phalcon\Image\Adapter\Gd('me.jpg');
// Put the watermark in the top left corner
$offsetX = 10;
$offsetY = 10;
$opacity = 70;
$image->watermark(
$watermark,
$offsetX,
$offsetY,
$opacity
);
$image->save('watermarked-image.jpg');
```
当然,您也可以在将水印图像应用到主图像之前对其进行操作:
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
$watermark = new \Phalcon\Image\Adapter\Gd('me.jpg');
$watermark->resize(100, 100);
$watermark->rotate(90);
$watermark->sharpen(5);
// Put the watermark in the bottom right corner with a 10px margin
$offsetX = ($image->getWidth() - $watermark->getWidth() - 10);
$offsetY = ($image->getHeight() - $watermark->getHeight() - 10);
$opacity = 70;
$image->watermark(
$watermark,
$offsetX,
$offsetY,
$opacity
);
$image->save('watermarked-image.jpg');
```
## 模糊图像
`blur()`方法采用单个参数 - 0(无效果)和100(非常模糊)之间的整数:
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
$image->blur(50);
$image->save('blurred-image.jpg');
```
<a name='pixelating'></a>
## 像素化图像
`pixelate()` 方法采用单个参数 - 整数越高,图像的像素化程度越高:
```php
<?php
$image = new \Phalcon\Image\Adapter\Gd('image.jpg');
$image->pixelate(10);
$image->save('pixelated-image.jpg');
```
- 常规
- Welcome
- 贡献
- 生成回溯
- 测试重现
- 单元测试
- 入门
- 安装
- Web服务器设置
- WAMP
- XAMPP
- 教程
- 基础教程
- 教程:创建一个简单的REST API
- 教程:Vökuró
- 提升性能
- 教程:INVO
- 开发环境
- Phalcon Compose (Docker)
- Nanobox
- Phalcon Box (Vagrant)
- 开发工具
- Phalcon开发者工具的安装
- Phalcon开发者工具的使用
- 调试应用程序
- 核心
- MVC应用
- 微应用
- 创建命令行(CLI)应用程序
- 依赖注入与服务定位
- MVC架构
- 服务
- 使用缓存提高性能
- 读取配置
- 上下文转义
- 类加载器
- 使用命名空间
- 日志
- 队列
- 数据库
- 数据库抽象层
- Phalcon查询语言(PHQL)
- ODM(对象文档映射器)
- 使用模型
- 模型行为
- ORM缓存
- 模型事件
- 模型元数据
- 模型关系
- 模型事务
- 验证模型
- 数据库迁移
- 分页
- 前端
- Assets管理
- 闪存消息
- 表单
- 图像
- 视图助手(标签)
- 使用视图
- Volt:模板引擎
- 业务逻辑
- 访问控制列表(ACL)
- 注解解析器
- 控制器
- 调度控制器
- 事件管理器
- 过滤与清理
- 路由
- 在session中存储数据
- 生成URL和路径
- 验证
- HTTP
- Cookies管理
- 请求环境
- 返回响应
- 安全
- 加密/解密
- 安全
- 国际化
- 国际化
- 多语言支持