# `bricks.Image` 及相关图标组件技术文档
> 基于 `bricks.js` 框架的图像与图标类组件实现
---
## 概述
本模块定义了基于 `bricks.JsWidget` 的一系列图像与图标类组件,用于在网页中动态加载、显示和管理图像资源。主要包括:
- `bricks.Image`:基础图像组件
- `bricks.Icon`:可缩放的图标组件(继承自 `Image`)
- `bricks.StatedIcon`:支持状态切换的图标组件(继承自 `Icon`)
- `bricks.BlankIcon`:占位图标组件(无图像内容)
所有组件均通过 `bricks.Factory` 注册,可在配置系统中通过类型名实例化。
---
## 1. `bricks.Image`
### 类定义
```js
class extends bricks.JsWidget
```
### 构造函数
```js
constructor(opts)
```
#### 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `opts` | Object | 配置选项对象 |
##### `opts` 属性
| 属性 | 类型 | 必需 | 描述 |
|------|------|------|------|
| `url` | String | 否 | 图像的 URL 地址 |
| `default_url` | String | 否 | 当主 `url` 加载失败时使用的备用图像地址 |
#### 行为
- 调用父类构造函数。
- 若传入 `url`,则自动调用 `set_url()` 设置图像源。
---
### 方法
#### `create()`
创建一个 `
` 元素作为组件的 DOM 根节点。
```js
create()
```
> **说明**:该方法由框架调用,在初始化时创建 DOM 结构。
---
#### `set_url(url)`
设置图像的 `src` 属性,并绑定错误处理以支持默认图像。
```js
set_url(url)
```
##### 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `url` | String | 图像资源 URL |
##### 行为
- 将 `this.url` 设为传入值。
- 如果配置了 `default_url`,则为 `
` 绑定 `onerror` 事件处理器,加载失败时自动切换到默认图。
- 设置 `dom_element.src = url`
---
#### `set_default_url()`
当图像加载失败时触发,切换至默认图像。
```js
set_default_url()
```
##### 行为
- 移除 `onerror` 监听器,防止重复触发。
- 将 `src` 设置为 `this.opts.default_url`
- 输出日志:`console.log('default_url', this.opts.default_url)`
---
#### `base64()`
将当前图像绘制到 Canvas 并导出为 Base64 编码的 PNG 数据 URL。
```js
base64()
```
##### 返回值
- `{String}` - 图像的 Data URL,格式如:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...`
##### 实现逻辑
1. 创建临时 `