当前位置: 首页 > news >正文

兰州网站制作公司100做网站开发的公司

兰州网站制作公司100,做网站开发的公司,漳州做网站设计,打开网站的语音播报怎么做注#xff1a;该列出的代码#xff0c;都在文章内示例出 1. 另存为按钮事件#xff1a; const saveAsHandler async () {const { path, sessionId } recordInfoif(typeof message ! string) return;// 因为我的图片是加密的#xff0c;所以我需要根据接口返回的路…注该列出的代码都在文章内示例出 1. 另存为按钮事件 const saveAsHandler async () {const { path, sessionId } recordInfoif(typeof message ! string) return;// 因为我的图片是加密的所以我需要根据接口返回的路径然后根据不同图片的密钥sessionId去进行解密decodeAvatarUrl处理最后返回blob所以这块儿不必纠结const res await decodeAvatarUrl(path, sessionId, false)// blob转ArrayBufferblobToArrayBuffer(res, async (buffer: ArrayBuffer) {const type await getImageType(res) // 将Blob数据传给getImageType经处理后获取图片类型, 请看标题2的代码示例// saveAsPicture 这个就是渲染进程与Electron的通信 请看标题3的代码示例saveAsPicture({ buffer, name: getNowTime(), type }).then(() setOpen(false))})}2. getImageType代码 /*** get image type In image buffer*/ export function getImageType (blob: Blob) {return new Promise((resolve: (type: string) void, reject) {const reader new FileReader();reader.onload (event: any) {// 使用Uint8Array和DataView来读取文件头部const arr new Uint8Array(event.target.result);const view new DataView(arr.buffer);// 根据文件头部的magic number判断文件类型switch (view.getUint16(0, false)) {case 0xffd8: // JPEGresolve(image/jpeg);break;case 0x8950: // PNGresolve(image/png);break;case 0x4749: // GIFresolve(image/gif);break;case 0x4949: // TIFFcase 0x4d4d: // TIFFresolve(image/tiff);break;default:reject(new Error(Unsupported image type));}};reader.onerror reject;// 读取Blob为ArrayBufferreader.readAsArrayBuffer(blob);}) }3. saveAsPicture的主要代码 /** 校验另存为 */ type saveAsPicturePrams {buffer: ArrayBuffer;name: string;type: string; } /** 另存为 */ export const saveAsPicture (params: saveAsPicturePrams) {// 关于与Electron的UI.SAVEASPATH的通信请看标题4return ipcRenderer.invoke(UI.SAVEASPATH, params) }4. Electron进程与渲染进程的交互 /*** 对话窗口另存为图片时需要获取选择要存储的路径* param buffer 数据* name 文件名* type 文件类型*/ ipcMain.handle(UI.SAVEASPATH, (e, arg: { buffer: ArrayBuffer, name: string, type: string; }) {return new Promise(async (resolve, reject) {const { buffer, name, type } arg;const imageType type?.split(/).pop() //获取图片格式const imageName xxxxxxx_${name}const defaultPath path.join(app.getPath(downloads),${imageName}.${imageType})await dialog.showSaveDialog(mainWindow, {title: 另存为...,buttonLabel: 保存,defaultPath,properties: [createDirectory],filters: [{name: 图片文件(*.${imageType}),extensions: [imageType]}]}).then((res: any) {if(res.canceled) {resolve(res)return;};fs.writeFileSync(res.filePath, new DataView(buffer))resolve(res)})})}) 效果图
http://www.w-s-a.com/news/382205/

相关文章:

  • 关于军队建设网站国内最好的wordpress主题
  • 小视频网站如何建设陪诊app开发
  • 英文网站首页优化国外手机网站源码
  • 网站建设公司如何找客户网站建设应该考虑哪些问题
  • 创新的江苏网站建设wordpress用户绑定手机
  • 自己做网赌网站网站设计者
  • 教育培训网站设计辽宁招标工程信息网
  • 韶关网站推广做网站要哪些人员
  • 建设银行网站链接开发公司与物业公司交接清单
  • 网站定位广告企业建网站有这个必要吗
  • 网站模板 商标黄冈建设工程信息网
  • 做鞋子的招聘网站有哪些微网站
  • 项目网站开发建网站 多少钱
  • wordpress做门户seo培训价格
  • 百度关键词优化软件如何wordpress站点地图优化
  • 使用cnnic证书的网站营销公司有哪些
  • 做电子杂志用什么网站如何将网站生成二维码
  • 三点水网站建设洛阳市建设厅网站
  • 哪家做网站便宜网络推广培训吧
  • 网站怎么做支付非凡软件站
  • 北京谁会做网站开发熊岳网站怎么做
  • 南阳哪有做网站公司定制网站本地企业
  • 平板上做网站的软件邀约网站怎么做请柬
  • 企业网站成品源码邯郸做网站流程
  • 建设网站需要什么技术两个网站放在同一个服务器 备案
  • 焦作做网站推广天津网络关键词排名
  • siteserver cms网站访问量挂机宝可以做网站吗
  • 普宁网站建设公司网络商城设计
  • wordpress主题 外贸网站wordpress安装后输入帐号登不进去
  • 陕西省西安市建设局网站永登网站设计与建设