You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

66 lines
1.8 KiB

import {BrowserWindow, dialog, nativeImage} from 'electron';
import {writeFile} from 'node:fs';
import {ICON, preload, url, WEB_URL, WIN_CONFIG} from '../main/constant';
let editImageWin: BrowserWindow | null = null;
function createEditImageWin(search?: any): BrowserWindow {
editImageWin = new BrowserWindow({
title: '图片编辑',
icon: ICON,
height: WIN_CONFIG.editImage.height,
width: WIN_CONFIG.editImage.width,
autoHideMenuBar: WIN_CONFIG.editImage.autoHideMenuBar, // 自动隐藏菜单栏
webPreferences: {
preload,
},
});
const imgUrl = search?.imgUrl || '';
// editImageWin.webContents.openDevTools();
if (url) {
editImageWin.loadURL(WEB_URL + `editImage.html?imgUrl=${imgUrl}`);
} else {
editImageWin.loadFile(WIN_CONFIG.editImage.html, {
search: `?imgUrl=${imgUrl}`,
});
}
editImageWin.once('ready-to-show', async () => {
editImageWin?.show();
});
return editImageWin;
}
function openEditImageWin(search?: any) {
if (!editImageWin || editImageWin?.isDestroyed()) {
editImageWin = createEditImageWin(search);
}
editImageWin.show();
}
function closeEditImageWin() {
editImageWin?.close();
}
async function downloadImg(imgUrl: any) {
let defaultPath = `pear-rec_${+new Date()}.png`;
let res = await dialog.showSaveDialog({
defaultPath: defaultPath,
filters: [{ name: 'Images', extensions: ['png', 'jpg', 'gif'] }],
});
if (!res.canceled) {
const imgData = nativeImage.createFromDataURL(imgUrl).toPNG();
writeFile(res.filePath, imgData, (err) => {
if (err) {
console.error(err);
} else {
console.log(`${defaultPath}:图片保存成功`);
}
});
}
}
export { closeEditImageWin, createEditImageWin, downloadImg, openEditImageWin };