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


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

 

濾鏡服務

開發步驟

 

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

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:

 

參數列表

類型

M/O(必選/可選)

說明

projectId

String

M

您在配置AppGallery Connect時得到的項目ID(agconnect-services.json文件中的product_id)。

appId

String

M

當前App的APPID(agconnect-services.json文件中的app_id)。

authApiKey

String

M

鑒權使用的Apikey(agconnect-services.json文件中的api_key)。

clientSecret

String

M

客戶端秘鑰(agconnect-services.json文件中的client_secret)。

clientId

String

M

客戶端ID(agconnect-services.json文件中的client_id)。

token

String

O

會話token,用於驗證第三方App身份,建議由您的服務器通過client_id+client_secret從AGC獲取。

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

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

參數列表

類型

M/O(必選/可選)

說明

requestJson

JSONObject

M

圖片處理請求參數。

imageBitmap

Bitmap

M

需要處理的圖片(寬高比在1:3和3:1之間,寬高像素均不超過8000)。

requestJson字段信息:

參數列表

類型

M/O(必選/可選)

說明

requestId

String

O

業務提供的請求ID。

taskJson

JSONObject

M

具體的業務請求信息。

authJson

JSONObject

M

鑒權參數。

濾鏡的taskJson字段信息:

參數列表

類型

M/O(必選/可選)

說明

filterType

int

O

顏色映射的圖片索引,索引范圍[0,24](0為原圖)。

intensity

float

O

濾鏡強度,取值范圍[0,1.0],默認為1.0。

compressRate

float

O

壓縮率,取值范圍(0,1.0],默認為1.0。

 

filterType映射表:

1

2

3

4

5

6

7

8

9

10

11

12

黑白

棕調

慵懶

小蒼蘭

富士

桃粉

海鹽

薄荷

蒹葭

復古

棉花糖

青苔

13

14

15

16

17

18

19

20

21

22

23

24

日光

時光

霧霾藍

向日葵

硬朗

古銅黃

黑白調

黃綠調

黃調

綠調

青調

紫調

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返回值:

參數列表

類型

M/O(必選/可選)

說明

resultCode

int

M

服務狀態碼

response

JSONObject

O

服務返回的結果。

image

Bitmap

O

處理后的圖片數據,對於直接返回圖片的API,通過該字段傳遞處理后的圖片數據。

response字段信息:

參數列表

類型

M/O(必選/可選)

說明

requestId

String

O

業務提供的請求id(如果請求攜帶此參數,則返回此參數值)。

serviceId

String

M

調用的服務名。

 

說明:調用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、服務初始化,與濾鏡服務一致,可參見開發步驟中的相關描述。

構建參數對象。

數列表

類型

M/O(必選/可選)

說明

requestJson

JSONObject

M

圖片處理請求參數。

imageBitmap

Bitmap

M

需要制作圖文智能排版的圖片(寬高比9:16)。

requestJson字段信息:

參數列表

類型

M/O(必選/可選)

說明

requestId

String

O

業務提供的請求ID。

taskJson

JSONObject

M

具體的業務請求信息。

authJson

JSONObject

M

鑒權參數

圖文智能排版的taskJson字段信息:

參數列表

類型

M/O(必選/可選)

說明

title

String

M

文案標題,必填字段,不超過7個中文漢字(總字符數量不超過10個),如果超過字數限制會被強制截斷。

description

String

M

文案內容,不超過44個中文漢字(總字符數量不超過66個),超過字數限制則進行截斷,用‘…’代替。

copyRight

String

O

圖片版權歸屬的個人/公司名稱,建議不超過7個中文漢字(總字符數量不超過10個),超過字數限制則進行截斷,用‘…’代替。

anchor

String

O

“詳情”或“查看更多”,建議4個中文漢字(總字符數不超過6個)超過字數限制則進行截斷,用‘…’代替。

isNeedMask

boolean

O

是否需要蒙層。

styleList構建參數

JSONArray

O

樣式列表,默認[],若為默認值,依據描述文本是否有換行符選擇文本;若用戶傳入list,從用戶給出的版式中選擇。

取值范圍['info1', 'info2', …, 'info9']。

說明

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返回值:

參數列表

類型

M/O(必選/可選)

說明

resultCode

int

M

返回結果碼。

viewGroup

ViewGroup

O

返回的目標view。

maskView

View

O

返回蒙層view(無蒙層時為null)。

response

JSONObject

O

返回結果。

response字段:

參數列表

類型

M/O(必選/可選)

說明

locationX

int

O

返回view位於手機的起始位置X。

locationY

int

O

返回view位於手機的起始位置Y。

maskColor

int

O

返回蒙層的顏色值。

colorHeigh

int

O

返回蒙層的高度(無蒙層時為0)。

requestId

String

O

業務提供的請求ID(如果請求時攜帶了就返回,沒有攜帶就不返回)。

serviceId

String

M

調用的服務名。

 

說明:①因為接口涉及網絡請求,需要開啟子線程去調用接口。②使用圖文智能排版服務時,您需要保證提供的token是有效的,否則無法使用該服務。③token的獲取方式可參見token獲取方式

6、停止服務。

當不再需要圖文智能排版效果時,調用該接口停止服務,stopCode為0時,執行成功。
if (null != imageVisionAPI) {
    int stopCode = imageVisionAPI.stop();
}

在下一篇中,將繼續帶來在應用中添加圖像裁剪能力、圖像主題標簽能力、貼紙花字能力的開發詳解,敬請期待~

 

原文鏈接:developer.huawei.com/consumer/cn…

原作者:胡椒


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM