При добавлении значков мы можем указать путь до изображения в формате PNG, JPEG или ICO:
icon: 'test.ico'либо объект класса NativeImage:
icon: nativeImage.createFromPath(path.join(__dirname, 'test.ico'))Чтобы воспользоваться вторым способом нужно предварительно импортировать объект nativeImage с помощью следующей инструкции:
const { nativeImage } = require('electron');Создать объект изображения позволяют следующие методы объекта nativeImage:
createEmpty() — создает пустой объект изображения:let img1 = nativeImage.createEmpty();
console.log( img1.getSize() ); // { width: 0, height: 0 }createFromPath(<Путь>) — загружает изображение из файла и возвращает объект NativeImage. Можно загрузить изображения в форматах PNG, JPEG и ICO. Если путь не существует или формат не поддерживается, то метод вернет пустой объект. Пример загрузки изображения в формате PNG:let img2 = nativeImage.createFromPath('test.png');
console.log( img2.getSize() ); // { width: 400, height: 300 }createFromBitmap(<Buffer>, <Опции>) — в первом параметре указывается буфер с данными, возвращаемыми методом toBitmap(). Во втором параметре передается объект со свойствами width, height и scaleFactor:let data1 = img2.toBitmap();
let img5 = nativeImage.createFromBitmap(data1, {
width: 400, height: 300, scaleFactor: 1.0
});
console.log( img5.getSize() ); // { width: 400, height: 300 }createFromBuffer(<Buffer>[, <Опции>]) — в первом параметре указывается буфер с данными в формате PNG или JPEG. Во втором параметре можно передать объект со свойствами width, height и scaleFactor:let data2 = img2.toPNG();
let img6 = nativeImage.createFromBuffer(data2, {
width: 400, height: 300, scaleFactor: 1.0
});
console.log( img6.getSize() ); // { width: 400, height: 300 }createFromDataURL(<dataURL>) — создает объект NativeImage на основе URL с закодированными данными:let data3 = img2.toDataURL();
let img7 = nativeImage.createFromDataURL(data3);
console.log( img7.getSize() ); // { width: 400, height: 300 }Получить объект с размерами изображения позволяет метод getSize([<scaleFactor>]):
let img3 = nativeImage.createFromPath('photo.jpg');
console.log( img3.getSize() ); // { width: 500, height: 333 }Метод isEmpty() возвращает значение true, если изображение пустое, и false — в противном случае:
console.log( img1.isEmpty() ); // true
console.log( img2.isEmpty() ); // falseПреобразовать объект изображения в различные форматы позволяют следующие методы:
toPNG([<Опции>]) — возвращает объект Buffer, содержащий данные в формате PNG. Пример сохранения изображения в файл:let data4 = img2.toPNG();
try {
fs.writeFileSync('dataPNG.png', data4, {encoding: null});
} catch (e) {
console.log(e);
}toJPEG(<Качество>) — возвращает объект Buffer, содержащий данные в формате JPEG. В параметре указывается качество изображения в виде числа от 0 до 100. Пример сохранения изображения в файл:let data5 = img3.toJPEG(100);
try {
fs.writeFileSync('dataJPEG.jpg', data5, {encoding: null});
} catch (e) {
console.log(e);
}toBitmap([<Опции>]) — возвращает объект Buffer, содержащий копию сырых данных изображения:console.log(img2.toBitmap());
// <Buffer 00 80 00 ff 00 80 00 ff ... 479950 more bytes>getBitmap([<Опции>]) — возвращает ссылку на объект Buffer, содержащий сырые данные изображения. Данные при этом не копируются:console.log(img2.getBitmap());
// <Buffer 00 80 00 ff 00 80 00 ff ... 479950 more bytes>toDataURL([<Опции>]) — возвращает URL с закодированными данными изображения:console.log(img2.toDataURL());
// data:image/png;base64,iVBORw0KGgoAAAANSUhE...Обрезать изображение позволяет метод crop(<Объект>). В качестве параметра указывается объект со свойствами x, y, width и height, описывающий обрезаемую область. Метод возвращает объект NativeImage. Пример:
let img8 = img3.crop({x: 200, y: 50, width: 300, height: 300});
try {
fs.writeFileSync('dataPNG2.png', img8.toPNG(), {encoding: null});
} catch (e) {
console.log(e);
}Изменить размеры изображения позволяет метод resize(<Опции>). В качестве параметра указывается объект со свойствами width (ширина), height (высота) и quality (качество). Если указана только ширина или только высота, то второй параметр рассчитывается с соблюдением соотношения сторон. В свойстве quality можно указать значения good, better или best (значение по умолчанию) в виде строки. Метод возвращает объект NativeImage. Пример:
let img9 = img3.resize({width: 250, quality: 'best'});
try {
fs.writeFileSync('dataPNG3.png', img9.toPNG(), {encoding: null});
} catch (e) {
console.log(e);
}