Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲日本欧美产综合在线,国内精品视频一区,亚洲免费在线看

          整合營銷服務商

          電腦端+手機端+微信端=數(shù)據同步管理

          免費咨詢熱線:

          5分鐘帶你看懂 GCanvas渲染引擎的演進


          者| 蔣衛(wèi)星(韋青)
          出品|阿里巴巴新零售淘系技術部

          本文內容大綱:
          1、輕量級圖形渲染引擎與應用
          2、渲染引擎演進與優(yōu)化之路
          3、渲染引擎未來的發(fā)展方向

          GCanvas 的定位是遵循 w3c 標準的跨平臺的輕量級圖形渲染引擎。有清晰的定位和目標,并且緊貼現(xiàn)有的業(yè)務,為業(yè)務提供豐富表現(xiàn)形式。

          GCanvas 發(fā)展

          GCanvas 引擎從早期的 H5 性能加速,到 Weex 業(yè)務落地,從小游戲的業(yè)務探索,到服務端渲染,再到小程序。經過幾個階段的發(fā)展后日漸成熟。

          淘系無線架構的不斷升級迭代,GCanvas 隨之保持著更新迭代的步調,在多個業(yè)務場景中使用,了解下一些應用案例。

          應用案例

          GCanvas 的目標人群是業(yè)務開發(fā)者,滿足業(yè)務的功能需求,對開發(fā)者也非常友好,尤其是前端開發(fā)者。熟悉 H5 Canvas 的同學,很容易上手,無任何學習成本。

          Weex
          2017年雙十一預熱會場,GCanvas 與魔影合作的版頭動畫

          天貓未來店
          天貓未來店的智能電子標簽,基于 GCanvas JSBinding 的智能電子標簽

          小游戲
          野生小伙伴,基于GCanvas小游戲應用

          Sketch Render
          Demo+ 中的 Sketch Render ,基于 GCanvas 實現(xiàn)的服務端渲染 Sketch 文件

          支付寶小程序/淘寶商家應用Canvas
          基于支付寶小程序/淘系商家應用同層渲染組件
          支付寶小程序諸葛找房 - 2D

          淘寶商家應用AR試妝 - WebGL

          架構演進與優(yōu)化

          以業(yè)務先贏的基本原則,保證業(yè)務的前提下,架構容器和升級變化過程中,GCanvas 引擎也經歷了演進和升級優(yōu)化。

          2017年的架構
          以插件為主的實現(xiàn),僅支持移動端

          最新架構
          提供標準接口,鏈路升級,API升級,不僅支持移動端還支持服務端

          架構變化主要有以下幾個方面:

          • 適配支持更多的 JS 框架和庫
          • JS 到 Native 調用通路,從模塊路由反射升級到 JSBinding
          • 渲染 API 支持 Metal
          • 增加 MacOS 和 Linux 平臺支持

          ? 內功修煉

          在快速迭代過重中,保持修煉內功。為保證高性能這個根本,在鏈路、內核以及底層圖形 API 等方面也都做了不少優(yōu)化與升級。

          JS 到 Native 鏈路優(yōu)化

          從 Weex 調用鏈路到 JSBinding,Weex 容器的 JS 到 Native 的通路采用模塊路由和反射的調用方式調用具體的模塊和組件。在 UI 和一些非高頻的場景完全能滿足需求。

          但是對于連續(xù)操作、連續(xù)動畫等高頻的 JS 到 Native 通訊的場景,鏈路上的耗時非常大,導致卡頓產生。這也是為什會 BindingX 和 GCanvas 的 JSBinding 的出現(xiàn)。

          BindingX是另一種解決頻發(fā)通訊消耗的方案,有興趣的可以看下BindingX。

          GCanvas 的 JSBinding 的實現(xiàn):通過鏈路調用的改造,整體幀率平均提升10幀左右。Android 和 iOS 的 JSBinding 實現(xiàn)方案類似。

          以 iOS 舉例說明:iOS 嘗試使用 JSExport 和全局方法,兩種 JSBinding 方案。

          • 第一種方案,使用 JSExport 和 JSExportAS
          • 第二種方案,使用 C Export 將方法和屬性用 JSStaticFunction 和 JSStaticValue 進行綁定

          兩種實現(xiàn)方案,經過測試對比第二種方案在性能更好。原因在于靜態(tài) JS 方法是通過方法名到 Native 函數(shù)的直接映射,而 JSExport 的方案則需要類型檢查,協(xié)議校驗,再調用 Native 方法中間經過額外的處理。

          簡單的耗時測試數(shù)據對比:

          JS 到 Native 數(shù)據傳輸
          方法調用與屬性訪問之外,參數(shù)數(shù)據的傳輸也影響每幀耗時,尤其是在 WebGL 的場景,通常有很大頂 點數(shù)據需要處理,有幾萬-幾十萬字節(jié),甚至更多。JS 到 Native 的大數(shù)據傳輸避免內存拷貝。

          JS 與 Native 對象生命周期
          JSBinding 的對象生命周期管理,JS 對象與 Native 對象一一對應,在 JS 對象創(chuàng)建觸發(fā) JSObjectInitializeCallback 回調,創(chuàng)建 Native 對象,并將 JS 與 Native 建立關聯(lián)。JS 的 GC 回收對象觸發(fā) JSObjectFinalizeCallback 的回調中去釋放對應 Native 對象。

          幀率優(yōu)化
          除了調用鏈路對幀率的提升,單幀繪制的 CPU 和 GPU 耗時相關的優(yōu)化點

          • 頂點數(shù)據計算,頂點數(shù)據合并提交
          • 優(yōu)化緩存策略,優(yōu)化文字相關紋理的緩存
          • 增加狀態(tài)管理,減少 GPU 提交數(shù)據和頻次
          • 優(yōu)化多邊形填充效率
          • 抗鋸齒等耗時特性可選

          w3c 標準完善

          • 支持陰影
          • 支持虛線
          • 支持多Clip區(qū)域嵌套
          • 支持Winding Rule支持

          擴展能力,擴展一些非標接口支持 Sketch 渲染

          • 陰影的擴散
          • 路徑的圖案填充
          • 路徑的高斯模糊
          • 路徑的內描邊和外描邊

          底層圖形API升級
          在 iOS12 之后,蘋果將 OpenGL ES API 設為廢棄,在已支持的設備上 OpenGL ES 的調用都已映射到 Metal 相應的后端實現(xiàn),Metal 替換 OpenGL 勢在必行。GCanvas 也已投入開發(fā) Metal,可選擇使用 Metal 作為渲染的后端。已完成了 2D 的絕大部分能力。

          選擇 Metal 會帶來以下方面的收益:

          • 內存數(shù)據使用更高效,內存數(shù)據可共享,
          • 盡可能的榨取更多 GPU 性能
          • 擺脫 OpenGL 的狀態(tài)機,更友好的面向對象編程
          • 蘋果后續(xù)的持續(xù)投入和更新
          • 豐富的調試工具,能精確到每個頂點數(shù)據和每個素點顏色
          • 便捷調試這著色器語言(Metal Shader Language)

          在內核升級優(yōu)化的過程中,也有很多同學積極參與其中來在此表示感謝。

          穩(wěn)定性

          增加了 API 的自動化測試以及 CI 建立保障穩(wěn)定性。

          未來的方向

          • GCanvas 開源社區(qū)加大投入增加社區(qū)影響力, 請大家積極關注并star
          • 更多紋理壓縮格式的支持
          • Vulkan 的持續(xù)演進
          • 更多平臺的支持,IoT 設備上應用
          • 與云端渲染的融合,提供 Fass 能力
          • WebGPU 以及 GPU 計算方向探索
          • WebAssembly 的應用

          作者:蔣衛(wèi)星(韋青)

          本文為云棲社區(qū)原創(chuàng)內容,未經允許不得轉載。

          控被鎖怎么解鎖▉▉▉【一電一 17154833762-】▉▉▉雖然我們講了這么多個章節(jié),但其實目前為止就只有一個 Rect 能用,略顯單調。于是乎,為了讓整個畫布稍微生動一些,這個章節(jié)我們來嘗試增加一個圖片類,如果你以后需要擴展一個物體類,也可以用同樣的方法。另外有時候我們還希望在物體屬性改變時或者畫布創(chuàng)建后做一些額外的事情,這個時候事件系統(tǒng)就派上用場啦,也就是我們常說的發(fā)布訂閱,我覺的這是前端應用最廣的設計模式沒有之一了。

          FabricImage 圖片類

          話不多說,開擼走起。先來看看 FabricImage 圖片類的實現(xiàn),我們可以想一下一個圖片類應該具備什么樣的功能,可以看看下面圖片類代碼的調用方式找找靈感:

          FabricImage.fromURL(
              'https://p26-passport.byteacctimg.com/img/user-avatar/7470b65342454dd6699a6cf772652260~300x300.image',
              (img) => { canvas.add(img) }, // 這里需要手動回調添加物體
              { width: 200, height: 200, left: 300, top: 300 }
          );
          FabricImage.fromURL(
              './src/beidaihe.jpeg',
              (img) => { canvas.add(img) }, // 這里需要手動回調添加物體
              { width: 200, height: 200, left: 600, top: 400 }
          );
          復制代碼

          上面代碼展示了兩種最常用的圖片加載方式,一個是遠程鏈接,一個是本地圖片,調用方式看起來有些特殊,不過我們先不管這個,直接來實現(xiàn)它就行。既然要繪制圖片,那肯定要先加載好才能用,這也是圖片類特殊的地方,它是異步的,并且加載圖片的方法是通用的,所以我們把它寫在 Util 這里,來簡單看下加載圖片的代碼(也許你在面試中遇見過):

          class Util {
              static loadImage(url) {
                  return new Promise((resolve, reject) => { // 方便鏈式調用,promise 這玩意多寫多熟悉就懂了
                      const img = document.createElement('img');
                      img.onload = () => { // 先進行事件監(jiān)聽,要在請求圖片前
                          img.onload = img.onerror = null;
                          resolve(img);
                      };;
                      img.onerror = () => {
                          reject(new Error('Error loading ' + img.src));
                      };
                      img.src = url; // 這個才是真正去請求圖片
                  });
              }
          }
          復制代碼

          代碼不多也不難理解,那接下來就要看如何繪制了。在 canvas 中要想繪制圖片也不難,大體過程就是把圖片變成 img 標簽,當做參數(shù)傳給 ctx.drawImage 這個畫布專用繪制方法,稍微要注意點的就是圖片的寬高設置,我們會先取傳入參數(shù) options 中間的寬高作為圖片的大小,沒傳參數(shù)的話再取圖片自身的寬高(因為此時圖片已經加載完成,所以可以取到圖片的信息),同樣的來簡單看下代碼實現(xiàn):

          class FabricImage extends FabricObject { // 繼承基類是必須的
              public type: string = 'image'; // 類型標識
              public _element: HTMLImageElement;
              /** 默認通過 img 標簽來繪制,因為最終都是要通過該標簽繪制的 */
              constructor(element: HTMLImageElement, options) {
                  super(options);
                  this._initElement(element, options);
              }
              _initElement(element: HTMLImageElement, options) {
                  this._element = element;
                  this.setOptions(options);
                  this._setWidthHeight(options);
                  return this;
              }
              /** 設置圖像大小 */
              _setWidthHeight(options) {
                  this.width = 'width' in options ? options.width : this.getElement() ? this.getElement().width || 0 : 0;
                  this.height = 'height' in options ? options.height : this.getElement() ? this.getElement().height || 0 : 0;
              }
              /** 核心:直接調用 drawImage 繪制圖像 */
              _render(ctx: CanvasRenderingContext2D) {
                  const x = -this.width / 2;
                  const y = -this.height / 2;
                  const elementToDraw = this._element;
                  elementToDraw && ctx.drawImage(elementToDraw, x, y, this.width, this.height);
              }
              getElement() {
                  return this._element;
              }
              /** 如果是根據 url 或者本地路徑加載圖像,本質都是取加載圖片完成之后在轉成 img 標簽 */
              static fromURL(url, callback, imgOptions) {
                  Util.loadImage(url).then((img) => {
                      callback && callback(new FabricImage(img as HTMLImageElement, imgOptions));
                  });
              }
          }
          復制代碼

          看完上面的代碼,你應該理解了前面為什么要那樣調用,雖然看起來有點繁瑣。然后。。。一個簡簡單單的 FabricImage 類就寫好啦。不過這里我再補充兩個小點:

          • 一個是我們可以將圖片素材緩存起來,這樣如果用到多張相同的圖片就不用重復發(fā)請求啦;
          • 另一個就是 imageSmoothingEnabled 屬性,這個是 canvas 用來設置圖片是否平滑的屬性,默認值為 true,表示平滑,false 只是表示圖片不平滑。比如將一張 50*50 的圖像放大 3 倍的時候,canvas 會默認做一些抗鋸齒處理使之平滑,如果不需要的話可以將其設置成 false,也算是種優(yōu)化,具體可以看看 mdn 上這個具體例子,這里就作為知識點簡單了解下,當然我也截了個示意圖意思一下(仔細看,一定能看出差別的):

          其實擴展一個類還是非常簡單的,你只需要知道這個類會有哪些獨特的自有屬性,并搞定 _render() 方法即可。

          事件派發(fā)

          因為這個章節(jié)內容比較少,所以我就把事件派發(fā)的內容也放在這里講解了。
          有時候我們希望在物體初始化前后、狀態(tài)改變前后、一些交互前后,能夠觸發(fā)相應的事件來實現(xiàn)自己的需求,比如畫布被點擊了我想...,物體被移動了我想...,這個就是典型的發(fā)布訂閱模式,前端應用最廣泛的設計模式,沒有之一(當然只是我覺得),比如:

          • html 中的 addEventListener
          • vue 中的 EventBus
          • 各種庫和插件暴露的一些鉤子函數(shù)(或者說是生命周期) 早前這玩意我也沒真正理解,總是看了就忘,因為總感覺這東西很抽象,說不上來這到底是個什么東西,所以這里我希望把它具象化,以便于理解。發(fā)布訂閱它其實可以理解成一個簡單的對象,就像下面這樣:
          // key 就是事件名,key 存儲的值就是一堆回調函數(shù)
          const eventObj = {
              eventName1: [cb1, cb2, ... ],
              eventName2: [cb1, cb2, cb3, ... ],
              ...
              // 比如下面這些常見的事件名
              click: [cb1, cb2, ... ],
              created: [cb1, cb2, cb3, ... ],
              mounted: [cb1, cb2, ... ],
          }
          復制代碼

          我們最終要構造的就是這樣一個對象,eventObj 相當于一個事件管理中心,當我們觸發(fā)相應條件 eventName 的事件發(fā)布時(發(fā)布),就會找到 eventObj 里面 eventName 對應的那個數(shù)組,然后將里面的回調函數(shù) cb 挨個遍歷執(zhí)行即可。那我們怎么想 eventObj 添加事件回調呢,很簡單就是找到 eventName 對應的數(shù)組往里 push 就行(訂閱),當然為了操作方便我們需要提供 eventObj.on、eventObj.off、eventObj.emit 等方法方便我們添加、觸發(fā)和刪除事件。
          下面我們來看看具體實現(xiàn),這東西寫多了就是很簡單的一件事情,寫法也比較固定,寫好了之后也基本不用改,實在不行 copy 也行:

          /**
           * 發(fā)布訂閱,事件中心
           * 應用場景:可以在特定的時間點觸發(fā)一系列事件(在本文主要就是渲染前后、初始化物體前后、物體狀態(tài)改變時)
           */
          export class EventCenter {
              private __eventListeners; // 就是上面說的 eventObj 那個對象
              /** 往某個事件里面添加回調,找到事件名所對應的數(shù)組往里push */
              on(eventName, handler) {
                  if (!this.__eventListeners) {
                      this.__eventListeners = {};
                  }
          
                  if (!this.__eventListeners[eventName]) {
                      this.__eventListeners[eventName] = [];
                  }
                  this.__eventListeners[eventName].push(handler);
                  return this;
              }
              /** 觸發(fā)某個事件回調,找到事件名對應的數(shù)組拿出來遍歷執(zhí)行 */
              emit(eventName, options = {}) {
                  if (!this.__eventListeners) {
                      return this;
                  }
          
                  let listenersForEvent = this.__eventListeners[eventName];
                  if (!listenersForEvent) {
                      return this;
                  }
          
                  for (let i = 0, len = listenersForEvent.length; i < len; i++) {
                      listenersForEvent[i] && listenersForEvent[i].call(this, options);
                  }
                  this.__eventListeners[eventName] = listenersForEvent.filter((value) => value !== false);
                  return this;
              }
              /** 刪除某個事件回調 */
              off(eventName, handler) {
                  if (!this.__eventListeners) {
                      return this;
                  }
          
                  if (arguments.length === 0) {
                      // 如果沒有參數(shù),就是解綁所有事件
                      for (eventName in this.__eventListeners) {
                          this._removeEventListener.call(this, eventName);
                      }
                  } else {
                      // 解綁單個事件
                      this._removeEventListener.call(this, eventName, handler);
                  }
                  return this;
              }
              _removeEventListener(eventName, handler) {
                  if (!this.__eventListeners[eventName]) {
                      return;
                  }
                  let eventListener = this.__eventListeners[eventName];
                  // 注意:這里我們刪除監(jiān)聽一般都是置為 null 或者 false
                  // 當然也可以用 splice 刪除,不過 splice 會改變數(shù)組長度,這點要尤為注意
                  if (handler) {
                      eventListener[eventListener.indexOf(handler)] = false;
                  } else {
                      eventListener.fill(false);
                  }
              }
          }
          復制代碼

          希望這種模式大家能夠達到默寫的水平,對我們日后代碼的理解也確實是很有幫助的。
          然后接下來要做什么呢?很簡單,就是讓需要事件的類繼承至這個事件類就可以了,然后在有需要的地方觸發(fā)就行了,這里我們以畫布為例,看下下面的代碼你就知道這種套路了

          、File<文件>1.New<新建>

          2.Open<打開>

          3.Open As<打開為>

          4.Open Recent<最近打開文件>

          5.Close<關閉>

          6.Save<存儲>

          7.Save As<存儲為>

          8.Save for Web<存儲為 Web 所用格弅>

          9.Revert<恢復>

          10.Place<置入>

          11.Import<輸入>

          <1>PDF Image<PDF 圖象導入>

          <2>Annotations<注釋>

          12.Export<輸出>

          13.Manage Workflow<管理工作流程>

          <1>Check In<登記>

          <2>Undo Check Out<迓原注銷>

          <3>Upload To Server<上載到服務器>

          <4>Add To Workflow<添加到工作流程>

          <5>Open From Workflow<從工作流程打開>

          14.Automate<自勱><1>Batch<批處理>

          <2>Create Droplet<創(chuàng)建快捷批處理>

          <3>Conditional Mode Change<條件模弅更改>

          <4>Contact Sheet<聯(lián)系表>

          <5>Fix Image<限制圖像>

          <6>Multi<Page PDF to PSD<多頁面 PDF 文件到 PSD 文件>

          <7>Picture package<圖片包>

          <8>Web Photo Gallery<Web 照片畫廊>

          15.File Info<文件簡介>

          16.Print Options<打印選頃>

          17.Page Setup<頁面設置>

          18.Print<打印>

          19.Jump to<跳轉到>

          20.Exit<退出>

          二、Edit<編輯>

          1.Undo<迓原>

          2.Step Forward<向前>

          3.Step Backward<迒回>

          4.Fade<消退>

          5.Cut<剪切>

          6.Copy<拷貝>7.Copy Merged<吅幵拷貝>

          8.Paste<粘貼>

          9.Paste Into<粘貼入>

          10.Clear<清除>

          11.Fill<填充>

          12.Stroke<描辪>

          13.Free Transform<自由發(fā)形>

          14.Transform<發(fā)換>

          <1>Again<再次>

          <2>Sacle<縮放>

          <3>Rotate<旋轉>

          <4>Skew<斜切>

          <5>Distort<扭曲>

          <6>Prespective<透規(guī)>

          <7>Rotate 180°<旋轉 180 度>

          <8>Rotate 90°CW<頇時針旋轉 90 度>

          <9>Rotate 90°CCW<逆時針旋轉 90 度>

          <10> Flip Hpeizontal<水平翻轉>

          <11> Flip Vertical<垂直翻轉>

          15.Define Brush<定丿畫筆>

          16.Define Pattern<設置圖案>17.Define Custom Shape<定丿自定形狀>

          18.Purge<清除內存數(shù)據>

          <1> Undo<迓原>

          <2> Clipboard<剪貼板>

          <3> Histories<歷史紈弽>

          <4> All<全部>

          19.Color Settings<顏色設置>

          20.Preset Manager<預置管理器>

          21.Preferences<預設>

          <1> General<常觃>

          <2> Saving Files<存儲文件>

          <3> Display & Cursors<顯示不光標>

          <4> Transparency & Gamut<透明區(qū)域不色域>

          <5> Units & Rulers<單位不標尺>

          <6> Guides & Grid<參考線不網格>

          <7> Plug<Ins & Scratch Disks<增效工具不暫存盤>

          <8> Memory & Image Cache<內存和圖像高速緩存>

          <9> Adobe Online<Adobe 在線>

          <10> Workflows Options<工作流程選頃>

          三、Image<圖像>

          1.Mode<模弅><1> Biyesap<位圖>

          <2> Grayscale<灰度>

          <3> Duotone<雙色調>

          <4> Indexed Color<索引色>

          <5> RGB Color<RGB 色>

          <6> CMYK Color<CMYK 色>

          <7> Lab Color<Lab 色>

          <8> Multichannel<多通道>

          <9> 8 Bits/Channel<8 位通道>

          <10> 16 Bits/Channel<16 位通道>

          <11> Color Table<顏色表>

          <12>Assing Profile<制定配置文件>

          <13>Convert to Profile<轉換為配置文件>

          2.Adjust<調整>

          <1> Levels<色階>>

          <2> Auto Laves<自勱色階>

          <3> Auto Contrast<自勱對比度>

          <4> Curves<曲線>>

          <5> Color Balance<色彩平衡>

          <6> Brightness/Contrast<亮度/對比度>

          <7> Hue/Saturation<色相/飽和度><8> Desaturate<去色>

          <9> Replace Color<替換顏色>

          <10> Selective Color<可選顏色>

          <11> Channel Mixer<通道混吅器>

          <12> Gradient Map<漸發(fā)映射>

          <13> Invert<反相>

          <14> Equalize<色彩均化>

          <15> Threshold<閾值>

          <16> Posterize<色調分離>

          <17> Variations<發(fā)化>

          3.Duplicate<復制>

          4.Apply Image<應用圖像>

          5.Calculations<計算>

          6.Image Size<圖像大小>

          7.Canvas Size<畫布大小>

          8.Rotate Canvas<旋轉畫布>

          <1> 180°<180 度>

          <2> 90°CW<頇時針 90 度>

          <3> 90°CCW<逆時針 90 度>

          <4> Arbitrary<任意覘度>

          <5> Flip Horizontal<水平翻轉><6> Flip Vertical<垂直翻轉>

          9.Crop<裁切>

          10.Trim<修整>

          11.Reverl All<顯示全部>

          12.Histogram<直斱圖>

          13.Trap<陷印>

          14.Extract<抽出>

          15.Liquify<液化>

          四、Layer<圖層>

          1.New<新建>

          <1> Layer<圖層>

          <2> Background From Layer<背景圖層>

          <3> Layer Set<圖層組>

          <4> Layer Set From Linked<圖層組來自鏈接癿>

          <5> Layer via Copy<通過拷貝癿圖層>

          <6> Layer via Cut<通過剪切癿圖層>

          2.Duplicate Layer<復制圖層>

          3.Delete Layer<初除圖層>

          4.Layer Properties<圖層屬悵>

          5.Layer Style<圖層樣弅>

          <1> Blending Options<混吅選頃><2> Drop Shadow<投影>

          <3> Inner Shadow<內陰影>

          <4> Outer Glow<外収光>

          <5> Inner Glow<內収光>

          <6> Bevel and Emboss<斜面和浮雕>

          <7> Satin<光澤>

          <8> Color Overlay<顏色疊加>

          <9> Gradient Overlay<漸發(fā)疊加>

          <10> Pattern Overlay<圖案疊加>

          <11> Stroke<描辪>

          <12> Copy Layer Effects<拷貝圖層樣弅>

          <13> Paste Layer Effects<粘貼圖層樣弅>

          <14> Paste Layer Effects To Linked<將圖層樣弅粘貼癿鏈接癿>

          <15> Clear Layer Effects<清除圖層樣弅>

          <16> Global Light<全局光>

          <17> Create Layer<創(chuàng)建圖層>

          <18> Hide All Effects<顯示/隱藏全部效果>

          <19> Scale Effects<縮放效果>

          6.New Fill Layer<新填充圖層>

          <1> Solid Color<純色>

          <2> Gradient<漸發(fā)><3> Pattern<圖案>

          7.New Adjusyesent Layer<新調整圖層>

          <1>Levels<色階>

          <2>Curves<曲線>

          <3>Color Balance<色彩平衡>

          <4>Brightness/Contrast<亮度/對比度>

          <5>Hue/Saturation<色相/飽和度>

          <6>Selective Color<可選顏色>

          <7>Channel Mixer<通道混吅器>

          <8>Gradient Map<漸發(fā)映射>

          <9>Invert<反相>

          <10>Threshold<閾值>

          <11>Posterize<色調分離>

          8.Change Layer Content<更改圖層內容>

          9.Layer Content Options<圖層內容選頃>

          10.Type<文字>

          <1> Create Work Path<創(chuàng)建工作路徑>

          <2> Convert to Shape<轉發(fā)為形狀>

          <3> Horizontal<水平>

          <4> Vertical<垂直>

          <5> Anti-Alias None<消除鋸齒無><6> Anti-Alias Crisp<消除鋸齒明晰>

          <7> Anti-Alias Strong<消除鋸齒強>

          <8> Anti-Alias Smooth<消除鋸齒平滑>

          <9> Covert To Paragraph Text<轉換為段落文字>

          <10> Warp Text<文字發(fā)形>

          <11>Update All Text Layers<更新所有文本圖層>

          <12>Replace All Missing Fonts<替換所以缺欠文字>

          11.Rasterize<柵格化>

          <1>Type<文字>

          <2>Shape<形狀>

          <3>Fill Content<填充內容>

          <4>Layer Clipping Path<圖層剪貼路徑>

          <5>Layer<圖層>

          <6>Linked Layers<鏈接圖層>

          <7>All Layers<所以圖層>

          12.New Layer Based Slice<基亍圖層癿切片>

          13.Add Layer Mask<添加圖層蒙板>

          <1> Reveal All<顯示全部>

          <2> Hide All<隱藏全部>

          <3> Reveal Selection<顯示選區(qū)>

          <4> Hide Selection<隱藏選區(qū)>14.Enable Layer Mask<吪用圖層蒙板>

          15.Add Layer Clipping Path<添加圖層剪切路徑>

          <1>Reveal All<顯示全部>

          <2>Hide All<隱藏全部>

          <3>Current Path<弼前路徑>

          16.Enable Layer Clipping Path<吪用圖層剪切路徑>

          17.Group Linked<亍前一圖層編組>

          18.UnGroup<叏消編組>

          19.Arrange<排列>

          <1> Bring to Front<置為頂層>

          <2> Bring Forward<前秱一層>

          <3> Send Backward<后秱一層>

          <4> Send to Back<置為底層>

          20.Arrange Linked<對齊鏈接圖層>

          <1> Top Edges<頂辪>

          <2> Vertical Center<垂直居中>

          <3> Bottom Edges<底辪>

          <4> Left Edges<左辪>

          <5> Horizontal Center<水平居中>

          <6> Right Edges<右辪>

          21.Distribute Linked<分布鏈接癿><1> Top Edges<頂辪>

          <2> Vertical Center<垂直居中>

          <3> Bottom Edges<底辪>

          <4> Left Edges<左辪>

          <5> Horizontal Center<水平居中>

          <6> Right Edges<右辪>

          22.Lock All Linked Layers<鎖定所有鏈接圖層>

          23.Merge Linked<吅幵鏈接圖層>

          24.Merge Visible<吅幵可見圖層>

          25.Flatten Image<吅幵圖層>

          26.Matting<修辪>

          <1> Define<去辪>

          <2> Remove Black Matte<秱去黑色雜辪>

          <3> Remove White Matte<秱去白色雜辪>

          亐、Selection<選擇>

          1.All<全部>

          2.Deselect<叏消選擇>

          3.Reselect<重新選擇>

          4.Inverse<反選>

          5.Color Range<色彩范圍>

          6.Feather<羽化>7.Modify<修改>

          <1> Border<擴辪>

          <2> Smooth<平滑>

          <3> Expand<擴展>

          <4> Contract<收縮>

          8.Grow<擴大選區(qū)>

          9.Similar<選區(qū)相似>

          10.Transform Selection<發(fā)換選區(qū)>

          11.Load Selection<載入選區(qū)>

          12.Save Selection<存儲選區(qū)>

          六、Filter<濾鏡>

          1.Last Filter<上次濾鏡操作>

          2.Artistic<艴術效果>

          <1> Colored Pencil<彩色鉛筆>

          <2> Cutout<剪貼畫>

          <3> Dry Brush<干筆畫>

          <4> Film Grain<膠片顆粒>

          <5> Fresco<壁畫>

          <6> Neon Glow<霓虹燈光>

          <7> Paint Daubs<涂抹棒>

          <8> Palette Knife<調色刀><9> Plastic Wrap<塑料包裃>

          <10> Poster Edges<海報辪緣>

          <11> Rough Pastels<粗糙彩筆>

          <12> Smudge Stick<繪畫涂抹>

          <13> Sponge<海綿>

          <14> Underpainting<底紋效果>

          <15> Watercolor<水彩>

          3.Blur<模糊>

          <1> Blur<模糊>

          <2> Blur More<迕一步模糊>

          <3> Gaussian Blur<高斯模糊>

          <4> Motion Blur<勱態(tài)模糊>

          <5> Radial Blur<徑向模糊>

          <6> Smart Blur<特殊模糊>

          4.Brush Strokes<畫筆描辪>

          <1> Accented Edges<強化辪緣>

          <2> Angled Stroke<成覘癿線條>

          <3> Crosshatch<陰影線>

          <4> Dark Strokes<深色線條>

          <5> Ink Outlines<油墨概冴>

          <6> Spatter<噴筆><7> Sprayed Strokes<噴色線條>

          <8> Sumi<e<怈量>

          5.Distort<扭曲>

          <1> Diffuse Glow<擴散亮光>

          <2> Displace<置換>

          <3> Glass<玱璃>

          <4> Ocean Ripple<海洋波紋>

          <5> Pinch<擠壓>

          <6> Polar Coordinates<極坐標>

          <7> Ripple<波紋>

          <8> Shear<切發(fā)>

          <9> Spherize<球面化>

          <10> Twirl<旋轉扭曲>

          <11> Wave<波浪>

          <12> Zigzag<水波>

          6.Noise<雜色>

          <1> Add Noise<加入雜色>

          <2> Despeckle<去斑>

          <3> Dust & Scratches<蒙塵不劃痕>

          <4> Median<中間值>

          7.Pixelate<像素化><1> Color Halftone<彩色半調>

          <2> Crystallize<晶格化>

          <3> Facet<彩坑化>

          <4> Fragment<碎片>

          <5> Mezzotint<銅版雕刻>

          <6> Mosaic<馬賽兊>

          <7> Pointillize<點狀化>

          8.Render<渲染>

          <1> 3D Transform<3D 發(fā)換>

          <2> Clouds<于彩>

          <3> Difference Clouds<分層于彩>

          <4> Lens Flare<鏡頭光暈>

          <5> Lighting Effects<光照效果>

          <6> Texture Fill<紋理填充>

          9.Sharpen<銳化>

          <1> Sharpen<銳化>

          <2> Sharpen Edges<銳化辪緣>

          <3> Sharpen More<迕一步銳化>

          <4> Unsharp Mask<USM 銳化>

          10.Sketch<素描>

          <1> Bas Relief<基底凸現(xiàn)><2> Chalk & Charcoal<粉筆和炭筆>

          <3> Charcoal

          <3> Chrome<鉻黃>

          <4> Conte Crayon<彩色粉筆>

          <5> Graphic Pen<繪圖筆>

          <6> Halftone Pattern<半色調圖案>

          <7> Note Paper<便條紙>

          <8> Photocopy<副本>

          <9> Plaster<塑料效果>

          <10> Reticulation<網狀>

          <11> Stamp<圖章>

          <12> Torn Edges<撕辪>

          <13> Water Paper<水彩紙>

          11.Stylize<風格化>

          <1> Diffuse<擴散>

          <2> Emboss<浮雕>

          <3> Extrude<突出>

          <4> Find Edges<查找辪緣>

          <5> Glowing Edges<照亮辪緣>

          <6> Solarize<曝光過度>

          <7> Tiles<拼貼><8> Trace Contour<等高線>

          <9> Wind<風>

          12.Texture<<紋理>

          <1> Craquelure<龜裂縫>

          <2> Grain<顆粒>

          <3> Mosained Tiles<馬賽兊拼貼>

          <4> Patchwork<拼綴圖>

          <5> Stained Glass<染色玱璃>

          <6> Texturixer<紋理化>

          13.Video<規(guī)頻>

          <1> De<Interlace<逐行>

          <2> NTSC Colors<NTSC 色彩>

          14.Other<其它>

          <1> Custom<自定丿>

          <2> High Pass<高反差保留>

          <3> Maximum<最大值>

          <4> Minimum<最小值>

          <5> Offset<位秱>

          15.Digimarc

          <1>Embed Watermark<嵌入水印>

          <2>Read Watermark<讀叏水印>七、View<規(guī)圖>

          1.New View<新規(guī)圖>

          2.Proof Setup<校樣設置>

          <1>Custom<自定>

          <2>Working CMYK<處理 CMYK>

          <3>Working Cyan Plate<處理青版>

          <4>Working Magenta Plate<處理洋紅版>

          <5>Working Yellow Plate<處理黃版>

          <6>Working Black Plate<處理黑版>

          <7>Working CMY Plate<處理 CMY 版>

          <8>Macintosh RGB

          <9>Windows RGB

          <10>Monitor RGB<顯示器 RGB>

          <11>Simulate Paper White<模擬紙白>

          <12>Simulate Ink Black<模擬墨黑>

          3.Proof Color<校樣顏色>

          4.Gamut Wiring<色域警告>

          5.Zoom In<放大>

          6.Zoom Out<縮小>

          7.Fit on Screen<滿畫布顯示>

          8.Actual Pixels<實際象素>9.Print Size<打印尺寸>

          10.Show Extras<顯示額外癿>

          11.Show<顯示>

          <1> Selection Edges<選區(qū)辪緣>

          <2> Target Path<目標路徑>

          <3> Grid<網格>

          <4> Guides<參考線>

          <5> Slices<切片>

          <6> Notes<注釋>

          <7> All<全部>

          <8> None<無>

          <9>Show Extras Options<顯示額外選頃>

          12.Show Rulers<顯示標尺>

          13.Snap<對齊>

          14.Snap To<對齊到>

          <1> Guides<參考線>

          <2> Grid<網格>

          <3> Slices<切片>

          <4> Document Bounds<文檔辪界>

          <5> All<全部>

          <6> None<無>15.Show Guides<鎖定參考線>

          16.Clear Guides<清除參考線>

          17.New Guides<新參考線>

          18.Lock Slices<鎖定切片>

          19.Clear Slices<清除切片>

          八、Windows<窗口>

          1.Cascade<層疊>

          2.Tile<拼貼>

          3.Arrange Icons<排列圖標>

          4.Close All<關閉全部>

          5.Show/Hide Tools<顯示/隱藏工具>

          6.Show/Hide Options<顯示/隱藏選頃>

          7.Show/Hide Navigator<顯示/隱藏導航>

          8.Show/Hide Info<顯示/隱藏信息>

          9.Show/Hide Color<顯示/隱藏顏色>

          10.Show/Hide Swatches<顯示/隱藏色板>

          11.Show/Hide Styles<顯示/隱藏樣弅>

          12.Show/Hide History<顯示/隱藏歷史記弽>

          13.Show/Hide Actions<顯示/隱藏勱作>

          14.Show/Hide Layers<顯示/隱藏圖層>

          15.Show/Hide Channels<顯示/隱藏通道>16.Show/Hide Paths<顯示/隱藏路徑>

          17.Show/Hide Character<顯示/隱藏字符>

          18.Show/Hide Paragraph<顯示/隱藏段落>

          19.Show/Hide Status Bar<顯示/隱藏狀態(tài)欄>

          20.Reset Palette Locations<復位調板位置>


          主站蜘蛛池模板: 国产在线第一区二区三区| 亚洲大尺度无码无码专线一区| 亚洲国产专区一区| 亚洲国产成人一区二区精品区| 成人精品一区二区不卡视频| 久久精品岛国av一区二区无码| 国产精品一区二区AV麻豆 | 无码精品不卡一区二区三区| 污污内射在线观看一区二区少妇| 国产激情精品一区二区三区| 四虎精品亚洲一区二区三区| 国产成人av一区二区三区在线观看| 精品三级AV无码一区| 日韩一区二区久久久久久| 99国产精品一区二区| 亚洲中文字幕丝袜制服一区 | 日韩精品无码一区二区三区不卡| 日韩在线一区二区三区免费视频| 在线精品自拍亚洲第一区| 国产福利微拍精品一区二区| 人妻无码一区二区三区AV| 亚洲国产一区二区a毛片| 久久精品一区二区免费看| 国产一区二区三区不卡观| 国产av成人一区二区三区| 又硬又粗又大一区二区三区视频| 精品国产一区二区三区久久蜜臀| 久久国产精品免费一区二区三区| 一区 二区 三区 中文字幕| 一区二区三区91| 亚洲日韩激情无码一区| 久久久精品人妻一区二区三区| 久久久久人妻精品一区蜜桃| 精品人妻中文av一区二区三区| 中文字幕一区二区三区在线观看| 国产精品自拍一区| 国产一区二区三区四| 久久无码精品一区二区三区| 国产视频一区二区在线播放| 亚洲av无码片区一区二区三区| 成人丝袜激情一区二区|