在許多應用中,我們常常需要實現拍攝照片的功能。通常情況下,調用原生相機可以滿足基本需求,但從用戶體驗的角度來看,并不是十分理想。這就引出了一個問題:能否在不使用原生相機的情況下,提升用戶拍照的體驗和效率?
針對上述問題,使用uni-app框架的live-pusher直播推流組件開發了一個名為"live-camera"的自定義相機功能。這個功能包含了應用內拍照以及拍照畫面自定義元素等特性,適用于身份證采集、證件照拍攝、水印照片拍攝等場景。
功能預覽
1. 水印相機
當需要在照片上顯示拍攝時間、地點、用戶等信息時,可以使用水印相機功能。通過修改示例項目中的方法,可以實現動態文字參數、圖片圖標等方式制作水印。
2. 證件照相機
在采集用戶真實頭像或者其他證件照片的場景下,可以使用證件照相機功能。如果需要對采集的照片進行摳圖替換背景等操作,可以參考相關的人像摳圖/分割接口。
3. 身份證相機
在進行實名認證或其他高敏感操作時,可以使用身份證相機功能進行身份證采集。
4. 自定義相機
通過live-camera,用戶無需跳轉出應用即可完成拍照,從而獲得更好的用戶體驗。
制作的目的
當我們需要在應用中實現拍攝照片的功能時,通常的流程是這樣的:用戶點擊添加照片按鈕,應用調起原生相機應用,用戶在相機應用上拍照并確認后返回原來的應用頁面。同時,我們還需要對照片進行壓縮操作。
盡管原生自定義相機可以滿足需求,但開發復雜且門檻較高,并不適合每個人。那么,在不使用原生相機的情況下,是否能提升用戶的拍照體驗和效率呢?經過嘗試使用直播推流組件的快照功能后,"live-camera"應運而生。
插件特點
"live-camera"具有以下特點:
- 適用于普通的照片采集,拍攝即可使用,無需應用之間來回跳轉,從而提高用戶體驗。
- 使用直播推流的快照事件,所得圖片大小適合手機端觀看,原圖無需單獨壓縮體積不會很大(通常幾百KB左右,受屏幕分辨率影響)。
- 可與業務頁面集成使用,例如在個人信息頁面直接拍攝頭像,甚至可以做到不需要重新打開一個頁面,真正做到化繁為簡。
- 在拍照畫面上,可以直接調整nvue頁面內容,隨意指定提示內容或者拍攝指示線等,無需接觸原生代碼。常見應用場景包括拍攝證件照、身份證等。
- 除了適用于Android和iOS端,還可以適配到微信小程序上,實現三端共用的效果。
- 需注意,該方法中圖片分辨率受限于用戶手機屏幕分辨率。
有幾點需要注意實現"live-camera"功能:
- nvue頁面對canvas的支持并不完善,因此目前照片的剪切和水印處理是在index頁面上進行的。雖然該功能可以在Android、iOS和小程序上使用,但還未針對性地進行優化。
- 對于Android平臺,由于權限授權是異步的,首次打開相機可能會出現相機無法正常打開的情況??梢赃M一步優化相機權限的設置。
- 可通過beauty參數來設置美顏功能,進一步提升拍攝效果。
- 可通過aspect參數來設置畫面比例,以適應不同的需求。
未來的發展方向包括:
- 如果官方支持了live-pusher的錄播能力,可以實現點擊拍照和長按錄制視頻的功能。
- 如果官方優化了live-pusher的對焦功能,就能解決部分機型設置自動對焦無效的問題。
總之,"live-camera"是一個強大且功能豐富的插件,為用戶帶來了更好的拍照體驗。無論是水印相機、證件照相機還是身份證相機,都可以輕松實現,并且方便集成到業務頁面中。而且,它不僅適用于Android和iOS端,還可以在微信小程序中使用。盡管只是使用了Android手機進行開發,但未來還有更多的優化和適配工作可以進行。"live-camera"的出現讓拍照變得簡單、快捷,并大大提升了用戶體驗。無論是普通用戶還是開發者,都可以發現更多有趣的玩法。