影像處理之濾鏡、圖文排版的開發詳解,從入門到起飛

華為開發者論壇發表於2021-07-07

在上一篇 如何給應用增加圖片編輯功能:剪裁、濾鏡、貼紙、排版、標籤,我們詳細講解了“圖片”風口下,各類應用可能面臨的“窘境”:由於應用內缺乏圖片編輯設計能力,或者提供的圖片編輯設計能力不足,導致原本功能強大的優質應用,沒法提高使用者留存率,影響應用自身競爭實力。 華為影像服務旨在為各類互動應用解決這一問題,可以說是應時而生,應勢而生。在詳細介紹 華為影像服務五大影像編輯能力分別是什麼、各自的應用場景以及功能價值的基礎上,接下來將為大家帶來五大圖片編輯功能的具體開發步驟。

濾鏡服務

開發步驟

濾鏡服務開發步驟如下,需要您提供圖片和相關引數,得到相應的返回值。

1、匯入濾鏡服務包。

Java程式碼

import com.huawei.hms.image.vision.*;    import com.huawei.hms.image.vision.bean.ImageVisionResult;

2、獲取濾鏡服務例項。

Java程式碼

// 獲取ImageVisionImpl物件     ImageVisionImpl imageVisionAPI = ImageVision.getInstance(this);

3、服務初始化,呼叫 setVisionCallBack時需要實現 ImageVision.VisionCallBack介面,重寫其中的 onSuccess(int successCode)和 onFailure(int errorCode)方法。

  • 框架初始化成功後會回撥onSuccess方法,在onSuccess方法中,需要再初始化濾鏡服務。呼叫濾鏡初始化介面時,只有透過校驗,第三方應用才能使用濾鏡服務,initCode必須為0,濾鏡服務初始化成功。

  • 框架初始化失敗時會回撥onFailure方法,傳回失敗錯誤碼。

    imageVisionAPI.setVisionCallBack(new ImageVision.VisionCallBack() {    @Override    public void onSuccess(int successCode) {       int initCode = imageVisionAPI.init(context, authJson);       ...    }    @Override    public void onFailure(int errorCode) {        ...    }});

入參authJson:

說明:圖文智慧排版服務,影像主題標籤服務token為必選值,獲取方式參見: token獲取方式

4、構建引數對濾鏡服務requestJson示例:象。

requestJson欄位資訊:

濾鏡的taskJson欄位資訊:

filterType對映表:

authJson對映表:請參見 authJson表。

濾鏡服務requestJson示例:

{  "requestId":"requestId",  "taskJson":{"intensity":"1","filterType":"1","compressRate":"1"},  "authJson":{"projectId":"projectIdTest","appId":"appIdTest","authApiKey":"authApiKeyTest","clientSecret":"CSecretTest","clientId":"CIdTest","token":"tokenTest"}}

5、濾鏡服務獲取結果。

您在呼叫 getColorFilter介面時,需要輸入待處理圖片的Bitmap,並選擇需要的濾鏡效果。濾鏡服務根據傳入的引數對原始圖片進行處理後,返回處理後圖片的Bitmap。

Java 程式碼

// 獲取visionResult返回值new Thread(new Runnable() {    @Override        public void run() {        ImageVisionResult visionResult = imageVisionAPI.getColorFilter(requestJson,imageBitmap);        }               }).start();

visionResult返回值:

response欄位資訊:

說明:呼叫 getColorFilter介面時,需要開啟一個子執行緒去執行,不能在主執行緒執行。

6、停止服務。

當不再需要濾鏡效果時,呼叫該介面停止服務,stopCode為0時,停止服務成功。

if (null != imageVisionAPI) {    int stopCode = imageVisionAPI.stop();}

圖文智慧排版服務

開發步驟

圖文智慧排版服務開發步驟如下,需要您提供圖片和相關引數,得到相應的返回值。

1、匯入圖文智慧排版服務包。

import com.huawei.hms.image.vision.bean.ImageLayoutInfo ;import com.huawei.hms.image.vision.*;

2、獲取圖文智慧排版服務例項。

// 獲取ImageVisionImpl 物件ImageVisionImpl imageVisionAPI = ImageVision.getInstance(this);

3、服務初始化,與濾鏡服務一致,可參見 開發步驟中的相關描述。

構建引數物件。

圖文智慧排版的taskJson欄位資訊:

說明

styleList中,info8為豎板排版,當前僅支援中文版式,不支援其他語言版式;info3為預設兜底版式;若使用者輸入info8且輸入標籤、文字描述有非中文語種,返回使用者info3版式。

authJson對映表:請參見 authJson欄位定義

圖文智慧排版服務requestJson示例:

Java 程式碼

{  "requestId":"requestId",  "taskJson":{"title":"輕奢新生代","description":"遠離城市的喧囂","copyRight":"華為雜誌鎖屏","isNeedMask":false,"anchor":"檢視詳情","styleList":["info1"]},  "authJson":{"projectId":"projectIdTest","appId":"appIdTest","authApiKey":"authApiKeyTest","clientSecret":"CSecretTest","clientId":"CIdTest","token":"tokenTest"}}

5、圖文智慧排版服務獲取結果。

在呼叫 analyzeImageLayout介面時,需要輸入待處理圖片Bitmap並選擇樣式和需要新增的文字等( 構建引數)。圖文智慧排版服務需要聯網,如不聯網,則預設反回info3樣式。圖文智慧排版服務會返回 ImageLayoutInfo封裝類,根據封裝類的引數進行view繪製(可以參見 示例程式碼繪製方式)。

// 獲取ImageLayoutInfo返回值new Thread(new Runnable() {    @Override        public void run() {            ImageLayoutInfo imageLayoutInfo = imageVisionAPI.analyzeImageLayout(requestJson, imageBitmap);        }               }).start();

ImageLayoutInfo返回值:

response欄位:

說明:①因為介面涉及網路請求,需要開啟子執行緒去呼叫介面。②使用圖文智慧排版服務時,您需要保證提供的token是有效的,否則無法使用該服務。③token的獲取方式可參見 token獲取方式

6、停止服務。

當不再需要圖文智慧排版效果時,呼叫該介面停止服務,stopCode為0時,執行成功。

if (null != imageVisionAPI) {    int stopCode = imageVisionAPI.stop();}

原文連結: https://developer.huawei.com/consumer/cn/forum/topic/0202568908557260771?fid=18

原作者:胡椒


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69970551/viewspace-2780057/,如需轉載,請註明出處,否則將追究法律責任。

相關文章