原文:https://github.com/electron/electron/blob/master/docs/api/native-image.md
譯者:Lin
使用PNG或JPG文件創(chuàng)建托盤圖標(biāo)惩激,dock圖標(biāo)和應(yīng)用圖標(biāo)。
進(jìn)程:進(jìn)程:主進(jìn)程,渲染進(jìn)程
Electron中娇掏,對(duì)于需要圖像的接口唠雕,你可以傳入文件的路徑或者NativeImage
實(shí)例本昏。當(dāng)傳入null
時(shí)將使用一個(gè)空的圖像汉形。
例如痢虹,當(dāng)創(chuàng)建一個(gè)托盤活著設(shè)置一個(gè)窗口的圖標(biāo)武氓,你可以傳入一個(gè)String
類型的圖像文件的地址:
const {BrowserWindow, Tray} = require('electron')
const appIcon = new Tray('/Users/somebody/images/icon.png')
let win = new BrowserWindow({icon: '/Users/somebody/images/window.png'})
console.log(appIcon, win)
或者從剪貼板返回的NativeImage
中讀取圖像:
const {clipboard, Tray} = require('electron')
const image = clipboard.readImage()
const appIcon = new Tray(image)
console.log(appIcon)
支持的類型
當(dāng)前支持PNG
和JPEG
圖像類型梯皿。建議使用PNG
仇箱,因?yàn)樗С滞该骱蜔o損壓縮。
Windows中索烹,你也可以從文件路徑中加載ICO
圖標(biāo)工碾。為了最好的可視化效果,建議至少包含以下尺寸:
- Small icon
- 16x16 (100% DPI scale)
- 20x20 (125% DPI scale)
- 24x24 (150% DPI scale)
- 32x32 (200% DPI scale)
- Large icon
- 32x32 (100% DPI scale)
- 40x40 (125% DPI scale)
- 48x48 (150% DPI scale)
- 64x64 (200% DPI scale)
- 256x256
點(diǎn)擊this article中的Size requirements部分百姓。
高分辨率圖像
有支持高DPI的平臺(tái)上渊额,例如蘋果Retina顯示屏,你可以在圖像的基本文件名的后面添加@2x
來標(biāo)記這個(gè)事一個(gè)高分辨率的圖像垒拢。
例如旬迹,如果icon.png
是一個(gè)標(biāo)準(zhǔn)分辨率的正常圖像,那么icon@2x.png
將被處理為一個(gè)有兩倍DPI密度的高分辨率圖像求类。
如果你想同時(shí)支持不同DPI密度顯示屏奔垦,你可以將不同尺寸的圖像放在同一個(gè)文件夾下,并且使用不包含DPI后綴的文件名尸疆。例如:
images/
├── icon.png
├── icon@2x.png
└── icon@3x.png
const {Tray} = require('electron')
let appIcon = new Tray('/Users/somebody/images/icon.png')
console.log(appIcon)
支持以下DPI的后綴名:
@1x
@1.25x
@1.33x
@1.4x
@1.5x
@1.8x
@2x
@2.5x
@3x
@4x
@5x
模版圖像
模版圖像包括黑色和無顏色(和一個(gè)透明通道)椿猎。模版圖像是不打算被作為單獨(dú)的圖像而使用的,并且通常和其他內(nèi)容混合創(chuàng)建一個(gè)理想的最終形態(tài)寿弱。
最常見的情況是在菜單欄圖標(biāo)上使用模版圖像犯眠,所以它可以適應(yīng)淺色和暗色的菜單欄。
注意:只有MacOS支持模版圖像症革。
為了使用一個(gè)模版圖像筐咧,它的文件名字必須以Template
單詞結(jié)尾。例如:
xxxTemplate.png
xxxTemplate@2x.png
方法
nativeImage
模塊又以下方法噪矛,所有的方法斗返回一個(gè)NativeImage
類的實(shí)例:
nativeImage.createEmpty()
返回值為NativeImage
類型
創(chuàng)建一個(gè)空的NativeImage
實(shí)例量蕊。
nativeImage.createFromPath(path)
-
path
String類型
返回值為NativeImage
類型
使用本地文件地址創(chuàng)建一個(gè)新的NativeImage
實(shí)例。如果path
不存在艇挨,或者不能被讀取残炮,或者不是一個(gè)圖像,那么這個(gè)方法返回一個(gè)空的圖像雷袋。
const nativeImage = require('electron').nativeImage
let image = nativeImage.createFromPath('/Users/somebody/images/icon.png')
console.log(image)
nativeImage.createFromBuffer(buffer[, options])
-
buffer
Buffer類型 -
options
Object類型(可選參數(shù))-
width
Integer類型(可選參數(shù))- 對(duì)于bitmap buffers是必須的參數(shù)吉殃。 -
height
Integer類型(可選參數(shù))- 對(duì)于bitmap buffers是必須的參數(shù)。 -
scaleFactor
Double類型(可選參數(shù))- 默認(rèn)是1.0楷怒。
-
返回值為NativeImage
類型
通過buffer
創(chuàng)建一個(gè)新的NativeImage
實(shí)例蛋勺。
nativeImage.createFromDataURL(dataURL)
-
dataURL
String類型
通過dataURL
創(chuàng)建一個(gè)新的NativeImage
實(shí)例。
類: NativeImage
使用PNG或JPG文件創(chuàng)建托盤圖標(biāo)鸠删,dock圖標(biāo)和應(yīng)用圖標(biāo)抱完。
實(shí)例的方法
NativeImage
類的實(shí)例有以下方法:
image.toPNG([options])
-
options
Object類型(可選參數(shù))-
scaleFactor
Double類型(可選參數(shù))- 默認(rèn)是1.0刃泡。
-
返回值為Buffer
類型 - 一個(gè)包含圖像的PNG
編碼數(shù)據(jù)的Buffer巧娱。
image.toJPEG(quality)
-
quality
Integer類型(必傳參數(shù))- 在0 - 100之間碉怔。
返回值為Buffer
類型 - 一個(gè)包含圖像的JPEG
編碼數(shù)據(jù)的Buffer。
image.toBitmap([options])
-
options
Object類型(可選參數(shù))-
scaleFactor
Double類型(可選參數(shù))- 默認(rèn)為1.0禁添。
-
返回值為Buffer
類型 - 一個(gè)包含圖像的原始位圖的數(shù)據(jù)副本的Buffer撮胧。
image.toDataURL([options])
-
options
Object類型(可選參數(shù))-
scaleFactor
Double類型(可選參數(shù))- 默認(rèn)為1.0。
-
返回值為String
類型 - 圖片的數(shù)據(jù)地址老翘。
image.getBitmap([options])
-
options
Object類型(可選參數(shù))-
scaleFactor
Double類型(可選參數(shù))- 默認(rèn)值為1.0芹啥。
-
返回值為Buffer
類型 - 一個(gè)包含圖像的原始位圖的數(shù)據(jù)的Buffer。
getBitmap()
和toBitmap()
的區(qū)別是铺峭,getBitmap()
不會(huì)復(fù)制位圖數(shù)據(jù)墓怀,所以你必須在當(dāng)前事件循環(huán)標(biāo)記中直接使用返回的Buffer,否則數(shù)據(jù)將會(huì)被改變或者被銷毀卫键。
image.getNativeHandle()
MacOS
返回值為Buffer
類型 - 一個(gè)存儲(chǔ)底層處理本地圖像的C指針的Buffer傀履。MacOS中,將返回一個(gè)指向NSImage
實(shí)例的指針莉炉。
請(qǐng)注意钓账,返回的指針是一個(gè)指向底層的本地土圖像來代替一個(gè)副本的弱指針,所以你必須確保對(duì)應(yīng)的nativeImage
實(shí)例一直存在絮宁。
image.isEmpty()
返回值為Boolean
類型 - 圖像是否是空官扣。
image.getSize()
返回值為Object
類型:
-
width
Integer類型 -
height
Integer類型
image.setTemplateImage(option)
-
option
Boolean類型
將圖像轉(zhuǎn)為一個(gè)模版圖像。
image.isTemplateImage()
返回值為Boolean
類型 - 圖像是否是一個(gè)模版圖像羞福。
image.crop(rect)
-
rect
Object類型 - 圖像要修剪的區(qū)域-
x
Integer類型 -
y
Integer類型 -
width
Integer類型 -
height
Integer類型
-
返回值為NativeImage
類型 - 被修剪的圖像。
image.resize(options)
-
options
Object類型-
width
Integer類型(可選參數(shù))- 默認(rèn)是圖像的寬 -
height
Integer類型(可選參數(shù))- 默認(rèn)是圖像的高 -
quality
String類型(可選參數(shù))- 期望的重設(shè)大小的圖片的質(zhì)量蚯涮。值可以是good
治专、better
或best
。默認(rèn)是best
遭顶。這個(gè)值表示一個(gè)期望的質(zhì)量和速度张峰。它們將轉(zhuǎn)化為一個(gè)具體的算法,這個(gè)算法取決于底層平臺(tái)的處理能力(CPU棒旗,GPU)喘批。這三個(gè)方法可能在一個(gè)給定的平臺(tái)上被映射到同一個(gè)算法上。
-
返回值為NativeImage
- 重設(shè)大小的圖像铣揉。
如果只指定了height
或者width
饶深,那么將使用當(dāng)前的縱橫比來重設(shè)圖像。
image.getAspectRatio()
返回值為Float
類型 - 圖像的縱橫比逛拱。
image.addRepresentation(options)
-
options
Object類型-
scaleFactor
Double類型 - The scale factor to add the image representation for. -
width
Integer類型(可選參數(shù))- 默認(rèn)為0
敌厘。如果一個(gè)二進(jìn)制位圖傳給了buffer
,那么這個(gè)選項(xiàng)必須設(shè)置朽合。 -
height
Integer類型(可選參數(shù))- 默認(rèn)為0
俱两。如果一個(gè)二進(jìn)制位圖傳給了buffer
饱狂,那么這個(gè)選項(xiàng)必須設(shè)置。 -
buffer
Buffer類型(可選參數(shù))- 包含原始圖像數(shù)據(jù)的buffer宪彩。 -
dataURL
String類型(可選參數(shù))- 包含了base64編碼的PNG或JPEG圖像的數(shù)據(jù)地址休讳。
-
添加一個(gè)指定的縮放因數(shù)的圖像表現(xiàn)。這個(gè)可以被用來明確的添加不同縮放因素表現(xiàn)到一個(gè)圖像上尿孔。這個(gè)方法可以在空?qǐng)D像上調(diào)用俊柔。