999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于H5的圖像處理技術研究

2019-12-17 08:07:41陸正
商情 2019年52期

【摘要】本項目基于筆者開發相關系統的經歷,通過對企業在線圖像處理的需求進行調研分析,利用H5的canvas圖像處理技術攻克了項目難點。項目在實測環境中成功地完成了對圖像的剪裁、旋轉、去污等操作,功能和性能都滿足用戶的需求。

【關鍵詞】H5 canvas 圖像處理

隨著接入互聯網設備的種類日趨增多,軟件產品開發過程中的兼容性愈發重要。如何只對產品進行一次編碼,而能使產品運行在Windows、Android、iOS等不同的系統下,成了各類軟件企業、項目經理和程序員的追求,在這種趨勢下,H5登上了歷史的舞臺。由于HTML在瀏覽器中的天然兼容性,它成為了原型制作、快速迭代開發的標準,甚至是移動端APP、PC桌面軟件的理想開發手段。使用H5處理各種圖像也成為了相關軟件中的重要需求。

本項目承接自蘇州快信通檔案服務有限公司,旨在為公司的檔案存儲、檢索提供自動化的服務。項目的主要任務是處理經過掃描上傳的檔案影像,并歸類檢索。由于掃描過程中的不可預測的因素,上傳的圖像文件可能會出現多余的空白、角度的傾斜或各種污漬,這就需要系統開發一個專門的圖像處理功能來對檔案影像進行加工。為了更好的嵌入系統,必須將圖像處理設計為在線功能,因此H5的canvas技術成為了必然的選擇。

1.1 技術選擇

在線處理圖像有三種技術可供選擇:

1)Flash。Flash曾經在web圖像處理方面占據了長時間的壟斷地位,但存在著嚴重的兼容性和安全性問題。2016年9月的Chrome 53開始,Chrome瀏覽器將屏蔽在后臺加載的Flash內容,宣布了Flash已被時代所淘汰。

2)SVG。SVG是基于XML的聲明式標記語言。它使用于簡單幾何圖形(例如圖標)的繪制,不能滿足復雜圖像的繪制操作。

可見,canvas成為了完成本項目需求的最佳選擇。

1.2 項目需求

對項目中處理的檔案圖像操作分為四種:

1)剪裁:使用鼠標在圖像上拖動,劃出一個矩形方塊,等待用戶確認以后根據矩形方塊所在的位置進行剪裁,只保留部分圖像(圖1.1)。

2)旋轉:設定角度參數(默認設為順時針轉動),確認之后,將圖像按照角度旋轉(圖1.2)。

3)圖章:首先用鼠標選定一個源位置,再在目標位置上點擊,系統將源位置上的圖像內容覆蓋到目標位置上(類似于Photoshop中的圖章功能)。

4)保存:將canvas的圖片內容編碼,上傳到服務器。

第二章 算法設計

2.1 圖像剪裁算法設計

考慮到用戶體驗,頁面上顯示的圖像尺寸并非原圖尺寸,而是經過一定比例縮放的。用戶在頁面上拖動鼠標,劃出需要剪裁的矩形范圍,此范圍經過比例計算,才能轉換成原圖上的剪裁范圍。

設縮放比例為r,頁面上的剪裁范圍左上角坐標為(x, y),范圍的長和寬分別為w和h,那么在原圖上的剪裁范圍應為:左上角(r * x, r * y),寬r * w、高r * h。

2.2 圖像旋轉算法設計

首先,圖像與畫布的尺寸是重合的,因此圖像在旋轉之后會超出畫布范圍,造成部分不完整,因此畫布的大小也必須重新設置。

在已知旋轉角度的前提下,容易算出圖像旋轉后所占矩形的尺寸,以此作為畫布的尺寸(圖2.2)。設圖像的寬和高分別為w、h,旋轉角度為θ(順時針),那么旋轉后畫布的寬至少應為:

h * sin(θ) + w * cos(θ)

高至少應為:

h * cos(θ) + w * sin(θ)

才能容納圖像。

利用canvas的rotate方法可以旋轉作圖時的坐標,不過旋轉時的原點是對象的左上角而非中心點,所以僅僅作旋轉操作會造成圖像的位置偏移。本項目中使用如下步驟來保證圖像的完整性(圖2.2):

1)將坐標平移,使圖像左上角移至正確位置。

2)進行旋轉操作。

2.3 圖章算法設計

實現“圖章”的步驟與Photoshop的操作基本類似。按住Alt鍵并點擊鼠標,表示選擇圖章源。只點擊鼠標表示用圖章源覆蓋當前位置。在任何時候按Esc鍵可取消圖章操作。

為簡單起見,將圖章設為矩形,寬和高為固定值w、h。

首先獲取鼠標在圖像點擊的位置(x, y),由此獲取圖章的左上角應為(x - w / 2, y - h / 2)。再根據2.1節的算法,推知此圖章源在原圖像上的位置與尺寸:左上角(r * (x - w / 2), r * (y - h / 2)),寬r * w,高r * h。

將此矩形從原圖像截取出來,粘貼覆蓋到目標處。目標的中心位置同樣由鼠標指定,假設為(x, y),那么目標矩形的位置應為(r * (x - w / 2), r * (y - h / 2))。

第三章 系統實現

3.1 圖像裁剪的實現

首先對畫布和繪圖環境做初始化:

已知劃定的矩形左上角坐標、寬度、高度和圖像的縮放比例rate,編寫方法cut實現圖像的剪裁。

3.2 圖像旋轉的實現

按照2.2節的算法計算出旋轉后的畫布尺寸,然后平移、旋轉、反向平移坐標,最后將原畫畫入新坐標。

3.3 圖章功能的實現

定義stp數據結構,存儲圖章的位置和大小:

響應鼠標點擊事件,獲取圖章源的位置。為區分鼠標選取的是圖章源還是目標,規定在選取圖章源的時候必須按住“Alt”鍵。

3.4 圖像上傳的實現

canvas自帶方法可將畫布內容編碼為展示圖片的data URI,并可設置圖像質量。在js代碼中構造表單,將data URI加入表單內容,提交表單即可完成上傳。在編碼過程中使用Base64編碼,其優勢在于:

1)減少http請求數,提高頁面加載速度。

2)可通過URL直接解碼查看圖片。

其中toDataURL方法中的第二個參數0.8為經驗參數,取值范圍在0-1之間。數值越高表示分辨率越高,編碼過后的內容大小會大大超出原圖,一般取0.8 ~ 0.9之間。

4.總結

該項目在開發過程中使用H5作為圖像處理的基礎技術,因此能夠在不依賴第三方插件(例如flash、silverlight)的情況下獨立運行,完美滿足用戶的需求。為改善用戶體驗,頁面上還使用了大量的快捷鍵、遮罩層幫助用戶快速、精確地完成操作,這些附加性的功能不在本文中累述。

為防止用戶誤操作,程序中還為用戶保留得了每一步操作的狀態,以便用戶隨時回退。完成這一需求有兩種途徑:

1)在程序中存儲每一步操作所產生的圖像數據。這種方法實現起來較為簡單,但數據存儲量巨大,造成了性能上的損失。

2)為每一種操作定義一個“逆操作”,遇到回退時執行逆操作即可。此方法能帶來性能上的提高,但實現方法較為繁瑣。鑒于項目周期較短,筆者未能將想法付諸實踐,期望在版本更新過程中逐步添加。

參考文獻:

[1]吳飛燕.基于HTML5 Canvas繪圖技術應用[J].電子測試,2018,04(04):116-118.

[2]張衛國.基于HTML5的2D動畫的設計與實現[D].廣東省:中山大學,2014.

[3]易鵬.基于HTML5 Canvas的交互式圖形工具箱的研究與實現[D].陜西省:西北大學,2017.

[4]王青.基于HTML5_Canvas的3D粒子圖形動畫的設計[J].中國科技信息,2019,05:79-80.

[5]陳芬.計算機圖形圖像處理的關鍵技術研究[J].電腦知識與技術,2018,22:259-260.

作者簡介:陸正(1980-),男,江蘇蘇州人,講師,蘇州工業園區服務外包職業學院信息工程學院教師,研究方向:軟件技術、前端工程化。

主站蜘蛛池模板: 亚洲第一成人在线| 国产簧片免费在线播放| 国产在线无码一区二区三区| 亚洲国产成人精品青青草原| 久久无码av三级| 99手机在线视频| 日韩亚洲高清一区二区| 丁香婷婷久久| 青青久视频| 久久精品中文字幕免费| 97青青青国产在线播放| 情侣午夜国产在线一区无码| 十八禁美女裸体网站| 精品国产成人av免费| 美女高潮全身流白浆福利区| 青青青视频蜜桃一区二区| 一级毛片无毒不卡直接观看| 亚洲午夜综合网| 久久91精品牛牛| 国产亚洲精品自在线| 亚洲婷婷丁香| 欧美成人看片一区二区三区| 亚洲人成在线精品| 99国产精品免费观看视频| 91久久性奴调教国产免费| 97久久精品人人做人人爽| 国产白浆一区二区三区视频在线| 欧美一级99在线观看国产| 无码中文字幕精品推荐| 国产在线自揄拍揄视频网站| 粗大猛烈进出高潮视频无码| 日韩欧美在线观看| 国产精品亚洲а∨天堂免下载| 国产欧美视频在线观看| 中文字幕亚洲另类天堂| 婷婷六月激情综合一区| 五月婷婷导航| 无套av在线| 黄色一及毛片| 免费人成黄页在线观看国产| 熟妇丰满人妻av无码区| 国产精品亚洲欧美日韩久久| 欧美国产在线一区| 丁香婷婷久久| 91最新精品视频发布页| 日韩一区二区三免费高清| 91久久夜色精品| 色综合五月| 人妻精品久久无码区| 一区二区无码在线视频| 97国产在线视频| 福利在线不卡| 欧美a级在线| 国产特级毛片| 国产十八禁在线观看免费| 成年人午夜免费视频| 国产三级a| 制服丝袜一区二区三区在线| 一区二区影院| 特级aaaaaaaaa毛片免费视频 | 综合人妻久久一区二区精品 | 91国内视频在线观看| 国产三级毛片| 国产伦精品一区二区三区视频优播 | 欧美亚洲一区二区三区在线| 国产自在线拍| 精品国产免费观看一区| 精品99在线观看| 一级毛片免费观看久| 美女被操黄色视频网站| 91精品国产一区| 茄子视频毛片免费观看| 中文无码日韩精品| 91高清在线视频| 五月婷婷亚洲综合| 特级欧美视频aaaaaa| 午夜福利网址| 一区二区在线视频免费观看| 五月天福利视频| 午夜一区二区三区| 午夜视频www| 久久91精品牛牛|