AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

在線圖片編輯器,支持PSD解析、AI摳圖等

來源: 責編: 時間:2023-08-05 11:45:47 4607觀看
導讀自從我上次分享一個人開發仿造稿定設計的圖片編輯器到現在,不知不覺已過去一年時間了,期間我經歷了裁員失業、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日后談吧。最近擠出時間來完善了這個項目,正式

自從我上次分享一個人開發仿造稿定設計的圖片編輯器到現在,不知不覺已過去一年時間了,期間我經歷了裁員失業、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日后談吧。0bc28資訊網——每日最新資訊28at.com

最近擠出時間來完善了這個項目,正式開源后在一天內就收獲了上百個Star,今天想向大家分享下這個開源圖片編輯器項目——迅排設計,以及我的一些感悟和開源體驗。0bc28資訊網——每日最新資訊28at.com

項目速覽

git clone https://github.com/palxiao/poster-design.gitcd poster-designnpm run prepared  # 快捷安裝依賴指令npm run serve     # 本地運行

0bc28資訊網——每日最新資訊28at.com

將同時運行前端界面與圖片生成服務(3000與7001端口),合成圖片時本地會啟動一個Chrome瀏覽器實例。0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

下面一起來看下都有些什么功能吧。0bc28資訊網——每日最新資訊28at.com

上傳 PSD 模板

點擊 “我的” - “資源管理”,上傳PSD模板按鈕,進入PSD解析上傳界面[4]界面。選擇或拖入 PSD 文件,等待解析完成后開始編輯,調整好模板后點擊右上角“上傳模板”,等待完成。0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

上傳完成后點擊查看作品即可打開模板,之后在 “我的作品” 中可以找到該模板。0bc28資訊網——每日最新資訊28at.com

線上為功能測試,資源將被上傳到 Github,并使用 jsdelivr 作為 CDN 節點訪問,這在某些網絡條件下可能會體驗不佳,請確認你的網絡環境,必要時科學上網。0bc28資訊網——每日最新資訊28at.com

由于服務器在國內,生成下載圖片可能會圖裂,這不是BUG。0bc28資訊網——每日最新資訊28at.com

AI 摳圖

上傳需要去除背景的圖片,自動摳除背景。在線體驗[5]0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

以上在線體驗效果Demo所分配的服務器資源僅1核1G內存,可以看到應付簡單摳圖場景還是不錯的,后續我會另開一篇文章介紹如何部署,感興趣的話提前關注不迷路~0bc28資訊網——每日最新資訊28at.com

編輯與設計

快捷鍵

? 保存:Ctrl / Command + S0bc28資訊網——每日最新資訊28at.com

? 復制(選中元素):Ctrl / Command + C0bc28資訊網——每日最新資訊28at.com

? 粘貼:Ctrl / Command + V0bc28資訊網——每日最新資訊28at.com

? 多選:按住 Shift 或 Ctrl / Command 然后鼠標點選0bc28資訊網——每日最新資訊28at.com

? 組合成組(多選時):Ctrl / Command + G0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

文字

畫布中雙擊內容,編輯文字,修改顏色,原生吸色器(Chrome):0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

圖片

除了拖拽縮放圖片大小,也可對圖像內容進行縮放裁剪,裁剪通常用于截取顯示原圖像的一部分:0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

支持拖動圖片放置到一個容器中顯示:0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

圖層

圖層面板中可隨意拖動元素快速改變層級,圖層鎖定后將固定在畫布中,此時元素變得不可移動,再次點擊按鈕即可解鎖:0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

標尺

從標尺欄中拖出輔助線,按住線段拖回標尺欄中刪除輔助線0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

項目架構

編輯界面就不多說了,就是對著稿定設計來,主要說說在保存時的操作,實際保存的是兩段JSON內容:0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

其中 Page 是整個頁面的 Schema,而 Widgets 則是扁平化的數組,代表著整個頁面中的元素集合,拍平是為了高效直觀地實現層級以及查找組件。0bc28資訊網——每日最新資訊28at.com

保存這些 JSON 后,在繪制頁面請求這些信息,然后將頁面呈現出來,繪制頁移除了畫布操作、屬性菜單面板等編輯頁才有的功能,只保留了基礎組件的引入(如果有充足開發成本理論上可嘗試采用 SSR 進一步提升速度),并通過一系列方法判斷字體、圖片、SVG等元素是否加載完畢,一旦整個頁面以及資源都加載完成則調用 window 下的廣播通知開始截圖。0bc28資訊網——每日最新資訊28at.com

在服務端,我們使用 puppeteer 啟動無頭瀏覽器,在 Chrome 中打開繪制頁,并往其 BOM 中注入廣播通知方法,這樣就完成了整個圖片生成操作的閉環。0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

技術棧概括

前端:Vue3 、Vite2 、Vuex 、ElementPlus0bc28資訊網——每日最新資訊28at.com

圖片生成:Puppeteer、Express0bc28資訊網——每日最新資訊28at.com

服務端:Node.js0bc28資訊網——每日最新資訊28at.com

一些可獨立的功能會被抽取出來作為單獨的庫引入使用。0bc28資訊網——每日最新資訊28at.com

組件庫 Github 地址:https://github.com/palxiao/front-end-arsenal0bc28資訊網——每日最新資訊28at.com

前端目錄詳解

/src0bc28資訊網——每日最新資訊28at.com

├── App.vue├── api // 請求接口管理├── assets|  ├── data // 數據資源|  ├── fonts // 本地字體資源|  └── styles // CSS 樣式文件├── common // 存放一些公共方法,例如上傳下載、彈窗提示等|  ├── hooks|  └── methods├── components|  ├── business // 放置業務組件|  |  ├── cropper // 裁剪(暫時棄用)|  |  ├── image-cutout // 摳圖|  |  ├── moveable // 操作插件|  |  ├── picture-selector // 照片庫彈窗選擇|  |  ├── qrcode // 二維碼插件|  |  ├── right-click-menu // 右鍵菜單|  |  └── save-download // 保存下載彈窗|  ├── common // 公共組件|  |  ├── PopoverTip.vue // 氣泡提示組件|  |  ├── ProgressLoading // 百分比進度條|  |  └── Uploader // 上傳組件|  └── modules // 核心模塊|     ├── index.ts|     ├── layout|     |  ├── designBoard.vue // 主界面|     |  ├── lineGuides.vue // 網格(棄用,由moveable提供輔助線功能)|     |  ├── sizeControl.vue // 元素操作組件(棄用,由moveable代理)|     |  └── zoomControl.vue // 縮放畫布|     ├── panel // 該目錄下的所有文件自動導入項目中|     |  ├── components|     |  ├── stylePanel.vue // 右側屬性編輯面板|     |  ├── widgetPanel.vue // 左側功能菜單面板|     |  └── wrap|     |     ├── BgImgListWrap.vue // 背景選擇面板|     |     ├── PhotoListWrap.vue // 照片面板|     |     ├── TempListWrap.vue // 模板列表|     |     ├── ToolsListWrap.vue // 工具面板|     |     ├── UserWrap.vue // 我的資源作品面板|     |     ├── GraphListWrap.vue // 素材面板|     |     ├── CompListWrap.vue // 組合列表(目前主要是文字組合)|     |     └── TextListWrap.vue // 文字面板|     ├── settings // 放置操作面板下的一些組件|     |  ├── EffectSelect // 效果選擇(未開發)|     |  ├── colorSelect.vue // 顏色選擇|     |  ├── iconItemSelect.vue // icon選擇|     |  ├── numberInput.vue // 數字輸入|     |  ├── numberSlider.vue // 數字拖拉|     |  ├── textInput.vue // 文字輸入|     |  ├── textInputArea.vue // 文字域輸入|     |  └── valueSelect.vue // 下拉選擇|     └── widgets // 該目錄下的所有文件自動導入項目中|        ├── pageStyle.vue // 背景/頁面設置|        ├── wGroup // 組合|        |  ├── wGroup.vue|        |  └── wGroupStyle.vue // 對應右側面板的操作|        ├── wImage // 圖片|        |  ├── components|        |  |  └── innerToolBar.vue|        |  ├── wImage.vue|        |  └── wImageStyle.vue // 對應右側面板的操作|        ├── wQrcode // 二維碼|        |  ├── wQrcode.vue|        |  └── wQrcodeStyle.vue // 對應右側面板的操作|        ├── wSvg // 矢量圖|        |  ├── wSvg.vue|        |  └── wSvgStyle.vue // 對應右側面板的操作|        └── wText // 文字|           ├── wText.vue|           └── wTextStyle.vue // 對應右側面板的操作├── config.ts // 公共配置├── main.ts // 項目入口文件├── mixins // 一些公共混合代碼,考慮優化|  ├── methods|  |  ├── DealWithCtrl.ts|  |  └── keyCodeOptions.ts|  ├── mouseDragging.ts|  ├── move.ts|  └── shortcuts.ts├── router // vue 路由|  ├── .....├── store // Vuex 狀態管理器|  ├── index.ts|  └── modules|     ├── base|     |  ├── .......|     └── design|        ├── .......├── types // TS類型配置|  ├── .......├── utils // 工具函數目錄|  ├── axios.ts|  ├── index.ts|  ├── plugins|  |  ├── cssLoader.ts // 異步加載css|  |  ├── modules.ts // 全局加載公共組件|  |  ├── pointImg.ts // 圖片點位顏色,測試中|  |  ├── preload.ts // 加載資源|  |  └── psd // 設計稿解析|  ├── utils.ts|  └── widgets|     └── elementConfig.ts // 配置全局默認導入的element組件└── views // 頁面目錄   ├── Draw.vue // 繪制頁   ├── Index.vue // 編輯頁(首頁)   ├── Psd.vue // PSD解析頁   └── components

由于項目當初開發至一半時才改用 Vue3 重構,所以有部分代碼混合了 Options 寫法,還請各位大佬不要笑話。0bc28資訊網——每日最新資訊28at.com

開源感受

早在去年我于年中總結文章里分享這個項目后,就收到不少私信留言表示對項目感興趣,甚至有要花錢買源碼或商業化二次開發的,我都回絕了。當時我的想法是:這個項目能受到關注說明一定是有價值的,那么就不應該封閉起來!0bc28資訊網——每日最新資訊28at.com

與大多數程序員一樣,我開始寫前端也是從一段段“膠水”代碼開始的,遇到問題的第一反應就是打開瀏覽器搜索,然后從各種問答與筆記中抽絲剝繭式地嘗試解決問題。0bc28資訊網——每日最新資訊28at.com

后來,代碼越寫越熟練,各種框架庫使用起來得心應手,算得上是初窺門徑,有時甚至也能一個人扛起整個前端項目了。當然,項目里通常也包含了幾十甚至上百個第三方依賴。0bc28資訊網——每日最新資訊28at.com

不必感到羞恥,這就是許多公司開發的常態,技術細節的探索與學習是永無止境的,但無法保證效率的話,你可能會先丟掉飯碗,所有插件庫都手擼,你可能一個項目都做不出來。0bc28資訊網——每日最新資訊28at.com

在我一開始做這個項目的時候,沒有找到現成的開源可以依貓畫虎,最后雖然寫完了整個項目,但也走了不少彎路。所以我看到了對項目關注的人,就仿佛看到了曾經的自己,因此決定開源,即使我代碼寫得再爛,興許也會有需要的人。0bc28資訊網——每日最新資訊28at.com

事實上,今年有人基于我的項目二次開發,上線了公司內部的編輯器:0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

有人正打算在公司的搭建器上增加類似的功能,特地加了我微信向我道謝:0bc28資訊網——每日最新資訊28at.com

0bc28資訊網——每日最新資訊28at.com

雖然這些都不是我的產出成果,但他們至少不用踩我踩過的坑,留出更多的時間,可以去研究自己熱愛的東西,去實現自己某方面的技術追求,最終產出更多的輪子,前端的生態就會越來越好,所有人也就都能從中受益,這也是開源的意義之一。0bc28資訊網——每日最新資訊28at.com

目前項目還在不斷完善中,可能有很多的不足之處,代碼寫得爛,我也是一邊學習一邊成長。開源不易,如果項目對你有幫助或啟發,可以點個 Star 支持一下~ 感謝!0bc28資訊網——每日最新資訊28at.com

Github 倉庫地址: https://github.com/palxiao/poster-design0bc28資訊網——每日最新資訊28at.com

鏈接

[1] 在線Demo: https://design.palxp.com/0bc28資訊網——每日最新資訊28at.com

[2] 文檔網站: https://xp.palxp.com/0bc28資訊網——每日最新資訊28at.com

[3] PSD解析上傳界面: https://design.palxp.com/psd0bc28資訊網——每日最新資訊28at.com

[4] AI摳圖在線體驗: https://design.palxp.com/home?koutu=10bc28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-131-0.html在線圖片編輯器,支持PSD解析、AI摳圖等

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: JavaScript學習 -AES加密算法

下一篇: 深度探索 Elasticsearch 8.X:function_score 參數解讀與實戰案例分析

標簽:
  • 熱門焦點
Top