# nativeImage
在 Electron 中, 對所有創建 images 的 api 來說, 你可以使用文件路徑或 `nativeImage` 實例. 如果使用 `null` ,將創建一個空的image 對象.
例如, 當創建一個 tray 或設置窗口的圖標時候,你可以使用一個字符串的圖片路徑 :
```javascript
var appIcon = new Tray('/Users/somebody/images/icon.png');
var window = new BrowserWindow({icon: '/Users/somebody/images/window.png'});
```
或者從剪切板中讀取圖片,它返回的是 `nativeImage`:
```javascript
var image = clipboard.readImage();
var appIcon = new Tray(image);
```
## 支持的格式
當前支持 `PNG` 和 `JPEG` 圖片格式. 推薦 `PNG` ,因為它支持透明和無損壓縮.
在 Windows, 你也可以使用 `ICO` 圖標的格式.
## 高分辨率圖片
如果平臺支持 high-DPI,你可以在圖片基礎路徑后面添加 `@2x` ,可以標識它為高分辨率的圖片.
例如,如果 `icon.png` 是一個普通圖片并且擁有標準分辨率,然后 `icon@2x.png`將被當作高分辨率的圖片處理,它將擁有雙倍 DPI 密度.
如果想同時支持展示不同分辨率的圖片,你可以將擁有不同size 的圖片放在同一個文件夾下,不用 DPI 后綴.例如 :
```text
images/
├── icon.png
├── icon@2x.png
└── icon@3x.png
```
```javascript
var appIcon = new Tray('/Users/somebody/images/icon.png');
```
也支持下面這些 DPI 后綴:
* `@1x`
* `@1.25x`
* `@1.33x`
* `@1.4x`
* `@1.5x`
* `@1.8x`
* `@2x`
* `@2.5x`
* `@3x`
* `@4x`
* `@5x`
## 模板圖片
模板圖片由黑色和清色(和一個 alpha 通道)組成.
模板圖片不是單獨使用的,而是通常和其它內容混合起來創建期望的最終效果.
最常見的用力是將模板圖片用到菜單欄圖片上,所以它可以同時適應亮、黑不同的菜單欄.
**注意:** 模板圖片只在 OS X 上可用.
為了將圖片標識為一個模板圖片,它的文件名應當以 `Template` 結尾. 例如:
* `xxxTemplate.png`
* `xxxTemplate@2x.png`
## 方法
`nativeImage` 類有如下方法:
### `nativeImage.createEmpty()`
創建一個空的 `nativeImage` 實例.
### `nativeImage.createFromPath(path)`
* `path` String
從指定 `path` 創建一個新的 `nativeImage` 實例 .
### `nativeImage.createFromBuffer(buffer[, scaleFactor])`
* `buffer` [Buffer][buffer]
* `scaleFactor` Double (可選)
從 `buffer` 創建一個新的 `nativeImage` 實例 .默認 `scaleFactor` 是 1.0.
### `nativeImage.createFromDataURL(dataURL)`
* `dataURL` String
從 `dataURL` 創建一個新的 `nativeImage` 實例 .
## 實例方法
`nativeImage` 有如下方法:
```javascript
const nativeImage = require('electron').nativeImage;
var image = nativeImage.createFromPath('/Users/somebody/images/icon.png');
```
### `image.toPng()`
返回一個 [Buffer][buffer] ,它包含了圖片的 `PNG` 編碼數據.
### `image.toJpeg(quality)`
* `quality` Integer (**必須**) - 在 0 - 100 之間.
返回一個 [Buffer][buffer] ,它包含了圖片的 `JPEG` 編碼數據.
### `image.toDataURL()`
返回圖片數據的 URL.
### `image.getNativeHandle()` _OS X_
返回一個保存了 c 指針的 [Buffer][buffer] 來潛在處理原始圖像.在OS X, 將會返回一個 `NSImage` 指針實例.
注意那返回的指針是潛在原始圖像的弱指針,而不是一個復制,你_必須_ 確保與 `nativeImage` 的關聯不間斷 .
### `image.isEmpty()`
返回一個 boolean ,標識圖片是否為空.
### `image.getSize()`
返回圖片的 size.
[buffer]: https://nodejs.org/api/buffer.html#buffer_class_buffer
### `image.setTemplateImage(option)`
* `option` Boolean
將圖片標識為模板圖片.
### `image.isTemplateImage()`
返回一個 boolean ,標識圖片是否是模板圖片.
- 介紹
- 常見問題
- Electron 常見問題
- 向導
- 支持平臺
- 分發應用
- 提交應用到 Mac App Store
- 打包應用
- 使用 Node 原生模塊
- 主進程調試
- 使用 Selenium 和 WebDriver
- 使用開發人員工具擴展
- 使用 Pepper Flash 插件
- 使用 Widevine CDM 插件
- 教程
- 快速入門
- 桌面環境集成
- 在線/離線事件探測
- API文檔
- 簡介
- 進程對象
- 支持的 Chrome 命令行開關
- 環境變量
- 自定義的 DOM 元素
- File 對象
- <webview> 標簽
- window.open 函數
- 在主進程內可用的模塊
- app
- autoUpdater
- BrowserWindow
- contentTracing
- dialog
- globalShortcut
- ipcMain
- Menu
- MenuItem
- powerMonitor
- powerSaveBlocker
- protocol
- session
- webContents
- Tray
- 在渲染進程(網頁)內可用的模塊
- desktopCapturer
- ipcRenderer
- remote
- webFrame
- 在兩種進程中都可用的模塊
- clipboard
- crashReporter
- nativeImage
- screen
- shell
- 開發
- 代碼規范
- 源碼目錄結構
- 與 NW.js(原 node-webkit)在技術上的差異
- 構建系統概覽
- 構建步驟(OS X)
- 構建步驟(Windows)
- 構建步驟(Linux)
- 在調試中使用 Symbol Server