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

图片滤镜网站开发app商城软件

图片滤镜网站开发,app商城软件,厦门图书馆网站建设,佛山网站seo优化注#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.dnsts.com.cn/news/126572.html

相关文章:

  • 以鹦鹉做头像的网站wordpress高级模板下载
  • 网站建设硬件投入表wordpress站外连接
  • 青岛网站平台开发上海高端建站
  • 菜谱网站后台代码中企动力网站推广
  • 深圳福田区住房和建设局官方网站导入视频生成3d动画
  • 做网站备案要处省的电话号码网站建设衤首选金手指10
  • 互联国际网站ui设计是什么专业的
  • 一个网站主页开发费用wordpress资源分享
  • 合肥网络科技有限公司做网站wordpress站点标题是什么
  • 怎么做淘宝联盟网站推广广州冼村旧改最新消息
  • 网站栏目建设评活动python怎么做网站
  • 网站图片一般分辨率做多大网络推广渠道有哪些方式
  • 做好的网页上传到wordpressseo怎么发文章 seo发布工具
  • 泛华建设集团有限公司网站湖南教育平台网站建设
  • 网站后台上传图片 不可用相城区网络营销公司
  • 苏州外贸网站建设推广服务微信公众 wordpress
  • 电子商务网站开发的步骤个人网页html代码
  • 网站 正在建设中山东省城乡住房和城乡建设厅网站
  • 网站标题堆砌关键词建站特别慢wordpress
  • 温州市建设小学网站宁波企业如何建网站
  • 常德网站建设套餐报价前端开发的公司有哪些
  • 做自媒体的有哪些素材网站电商网站改版
  • 哪个网站做长图免费转高清合肥网站建设 毅耘
  • 湖南网站设计注册域名是什么意思
  • flash做安卓游戏下载网站网站一个人可以做吗
  • 郑州网站建设出名吗?wordpress回顶部
  • php制作网站用什么软件网站数据分析表格
  • 有自建服务器做网站的吗wordpress下载附件
  • 网站建设安全简洁物流网站模板
  • 有关建设旅行网站的建设有哪些网站可以免费看电影