在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙系統(tǒng)生成二維碼技術(shù)

OpenHarmony技術(shù)社區(qū) ? 來源:鴻蒙技術(shù)社區(qū) ? 作者:軟通動力HOS ? 2021-10-19 09:17 ? 次閱讀

在實際應(yīng)用開發(fā)中,時不時的會遇到 AI 領(lǐng)域相關(guān)的一些技術(shù),本節(jié)主要詳細(xì)講述一下生成二維碼技術(shù),二維碼可能涉及在各領(lǐng)域中,如:社交或通訊類應(yīng)用、購物或支付類應(yīng)用等。

所以對于 HarmonyOS 開發(fā)者而言,也需要了解和掌握 HarmonyOS AI 領(lǐng)域相關(guān)技術(shù),這對于每一個 HarmonyOS 開發(fā)者,也是一項必不可少的專業(yè)技能。

功能介紹

生成二維碼主要根據(jù)開發(fā)者給定的字符串信息和二維碼圖片尺寸,返回相應(yīng)的二維碼圖片字節(jié)流。調(diào)用方可以通過二維碼字節(jié)流生成二維碼圖片。

開發(fā)指南

①創(chuàng)建二維碼

實例化接口,獲取二維碼偵測器:
IBarcodeDetectorbarcodeDetector
=VisionManager.getBarcodeDetector(QRCodeAbilitySlice.this);

定義碼生成圖像的尺寸:
finalintSAMPLE_LENGTH=500;
根據(jù)圖像的大小,分配字節(jié)流數(shù)組的空間:
byte[]byteArray=newbyte[SAMPLE_LENGTH*SAMPLE_LENGTH*4];
調(diào)用 IBarcodeDetector 的 detect() 方法,根據(jù)輸入的字符串信息 barText 生成相應(yīng)的二維碼圖片字節(jié)流:
barcodeDetector.detect(barText,byteArray,SAMPLE_LENGTH,SAMPLE_LENGTH);
釋放偵測器:
barcodeDetector.release();
通過 SourceOptions 指定數(shù)據(jù)源的格式信息:
ImageSource.SourceOptionssrcOpts=newImageSource.SourceOptions();
定義圖片格式:
srcOpts.formatHint="image/png";
創(chuàng)建圖片源:
ImageSourceimgSource=ImageSource.create(byteArray,srcOpts);
創(chuàng)建圖像解碼選項:
ImageSource.DecodingOptionsdecodingOpts=new
ImageSource.DecodingOptions();
decodingOpts.desiredPixelFormat=PixelFormat.ARGB_8888;

通過圖片源創(chuàng)建 PixelMap:
PixelMappMap=imgSource.createPixelmap(decodingOpts);
賦值到圖片標(biāo)簽
imgQrCode.setPixelMap(pMap);
釋放資源:
barcodeDetector.release();
imgSource.release();
if(pMap!=null)
{
pMap.release();
}

斷開與能力引擎的連接:
VisionManager.destroy();

②定義 ConnectionCallback 回調(diào),實現(xiàn)連接能力引擎成功與否后的操作

代碼如下:
ConnectionCallbackconnectionCallback=newConnectionCallback(){
@Override
publicvoidonServiceConnect(){
需要生成二維碼的字符串:
StringbarText="";

連接成功生成二維碼:
createQRCode(barText);
}
@Override
publicvoidonServiceDisconnect(){
//Dosomethingwhenserviceconnectsunsuccessfully
}
};

③調(diào)用 VisionManager.init() 方法,將此工程的 context 和 connectionCallback作為入?yún)?,建立與能力引擎的連接

代碼如下:
intresult=VisionManager.init(context,connectionCallback);

示例代碼

xml 布局:


<DirectionalLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:orientation="vertical">

<Image
ohos:id="$+id:imgQrCode"
ohos:height="500vp"
ohos:width="500vp"
ohos:layout_alignment="center"/>

DirectionalLayout>

案例代碼:

MainAbilitySlice.java
packagecom.isoftstone.qrcode.slice;

importcom.isoftstone.qrcode.ResourceTable;
importohos.aafwk.ability.AbilitySlice;
importohos.aafwk.content.Intent;
importohos.agp.components.Text;

publicclassMainAbilitySliceextendsAbilitySlice{

@Override
publicvoidonStart(Intentintent){
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
TextqrCode=(Text)findComponentById(ResourceTable.Id_qrCode_text);
qrCode.setClickedListener(component->present(newQRCodeAbilitySlice(),newIntent()));
}

@Override
publicvoidonActive(){
super.onActive();
}

@Override
publicvoidonForeground(Intentintent){
super.onForeground(intent);
}
}
QRCodeAbilitySlice.java

packagecom.isoftstone.qrcode.slice;

importcom.isoftstone.qrcode.ResourceTable;
importohos.aafwk.ability.AbilitySlice;
importohos.aafwk.content.Intent;
importohos.agp.components.Image;
importohos.ai.cv.common.ConnectionCallback;
importohos.ai.cv.common.VisionManager;
importohos.ai.cv.qrcode.IBarcodeDetector;
importohos.media.image.ImageSource;
importohos.media.image.PixelMap;
importohos.media.image.common.PixelFormat;

/**
*二維碼生成
*/
publicclassQRCodeAbilitySliceextendsAbilitySlice{

privateImageimgQrCode;
@Override
publicvoidonStart(Intentintent){
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_qrcode);
imgQrCode=(Image)findComponentById(ResourceTable.Id_imgQrCode);
}

@Override
publicvoidonActive(){
super.onActive();
ConnectionCallbackconnectionCallback=newConnectionCallback(){
@Override
publicvoidonServiceConnect(){
//需要生成二維碼的字符串
StringbarText="www.baidu.com";
//連接成功生成二維碼
createQRCode(barText);
}

@Override
publicvoidonServiceDisconnect(){
//Dosomethingwhenserviceconnectsunsuccessfully
}
};
//初始化,建立與能力引擎的連接
VisionManager.init(this,connectionCallback);
}

@Override
publicvoidonForeground(Intentintent){
super.onForeground(intent);
}

/**
*創(chuàng)建二維碼
*@parambarText需要生成二維碼的字符串
*/
privatevoidcreateQRCode(StringbarText){
//實例化接口,獲取二維碼偵測器
IBarcodeDetectorbarcodeDetector=VisionManager.getBarcodeDetector(QRCodeAbilitySlice.this);
//定義碼生成圖像的尺寸
finalintSAMPLE_LENGTH=500;
//根據(jù)圖像的大小,分配字節(jié)流數(shù)組的空間
byte[]byteArray=newbyte[SAMPLE_LENGTH*SAMPLE_LENGTH*4];
//調(diào)用IBarcodeDetector的detect()方法,根據(jù)輸入的字符串信息生成相應(yīng)的二維碼圖片字節(jié)流
barcodeDetector.detect(barText,byteArray,SAMPLE_LENGTH,SAMPLE_LENGTH);
//釋放偵測器
barcodeDetector.release();
//通過SourceOptions指定數(shù)據(jù)源的格式信息
ImageSource.SourceOptionssrcOpts=newImageSource.SourceOptions();
//定義圖片格式
srcOpts.formatHint="image/png";
//創(chuàng)建圖片源
ImageSourceimgSource=ImageSource.create(byteArray,srcOpts);
//創(chuàng)建圖像解碼選項
ImageSource.DecodingOptionsdecodingOpts=newImageSource.DecodingOptions();
decodingOpts.desiredPixelFormat=PixelFormat.ARGB_8888;
//通過圖片源創(chuàng)建PixelMap
PixelMappMap=imgSource.createPixelmap(decodingOpts);
//賦值到圖片標(biāo)簽
imgQrCode.setPixelMap(pMap);
//釋放資源
barcodeDetector.release();
imgSource.release();
if(pMap!=null)
{
pMap.release();
}
//斷開與能力引擎的連接
VisionManager.destroy();
}
}

責(zé)任編輯:haq


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2641

    瀏覽量

    67780
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2084

    瀏覽量

    32243

原文標(biāo)題:在鴻蒙上生成二維碼的方法!

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    基于STM32的二維碼識別源碼+二維碼解碼庫lib

    基于STM32的二維碼識別源碼+二維碼解碼庫lib,推薦下載!
    發(fā)表于 05-28 22:04

    基于STM32的二維碼識別源碼+二維碼解碼庫lib

    基于STM32的二維碼識別源碼+二維碼解碼庫lib項目實例下載! 純分享帖,需要者可點擊附件免費獲取完整資料~~~【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請第一時間告知,刪除內(nèi)容!
    發(fā)表于 05-23 20:45

    為什么說二維碼模塊是智能終端的“眼睛”?

    系統(tǒng)到物流的包裹追蹤,這些看似簡單的掃動作背后,都離不開這個微型"視覺系統(tǒng)"的高效運作。在物聯(lián)網(wǎng)技術(shù)飛速發(fā)展的今天,二維碼
    的頭像 發(fā)表于 05-21 14:39 ?130次閱讀
    為什么說<b class='flag-5'>二維碼</b>掃<b class='flag-5'>碼</b>模塊是智能終端的“眼睛”?

    基于RK3576開發(fā)板的二維碼生成

    檔介紹了如何快速上手二維碼生成,包括源碼工程下載、開發(fā)環(huán)境搭建、例程編譯與運行。通過EASY-EAI API,用戶可輕松生成二維碼圖片,API封裝了
    的頭像 發(fā)表于 05-10 15:19 ?595次閱讀
    基于RK3576開發(fā)板的<b class='flag-5'>二維碼</b><b class='flag-5'>生成</b>

    二維碼讀取器是干嘛的

    二維碼讀取器(用于二維碼讀取的機(jī)器),作為一種現(xiàn)代化的自動識別技術(shù)設(shè)備,正日益滲透到我們生活的方方面面。從商場購物到物流配送,從醫(yī)療管理到工業(yè)生產(chǎn)線,二維碼讀取器憑借其高效、準(zhǔn)確的讀取
    的頭像 發(fā)表于 03-17 15:57 ?330次閱讀
    <b class='flag-5'>二維碼</b>讀取器是干嘛的

    一“”當(dāng)先!看二維碼模組如何重塑智能門鎖掃體驗

    在科技日新月異的今天,智能門鎖正逐步取代傳統(tǒng)機(jī)械鎖,成為現(xiàn)代家庭安全防護(hù)的首選。在這場門鎖智能化革命中,二維碼模組以其獨特的識別技術(shù)和便捷的操作方式,成為智能門鎖的重要組成部分。本文將深入探討二維碼
    的頭像 發(fā)表于 03-12 16:17 ?376次閱讀
    一“<b class='flag-5'>碼</b>”當(dāng)先!看<b class='flag-5'>二維碼</b>模組如何重塑智能門鎖掃<b class='flag-5'>碼</b>體驗

    嵌入式二維碼識別引擎是什么設(shè)備?哪些場景用得到?

    在科技日新月異的今天,嵌入式技術(shù)已廣泛滲透到我們生活的方方面面,其中,嵌入式二維碼識別引擎作為一種高效、便捷的信息采集工具,正逐漸成為眾多行業(yè)智能化升級的重要推手。本文將帶您深入探索二維碼識讀引擎
    的頭像 發(fā)表于 03-10 14:57 ?295次閱讀
    嵌入式<b class='flag-5'>二維碼</b>識別引擎是什么設(shè)備?哪些場景用得到?

    快速將二維碼掃描識別模組嵌入集成到安卓一體機(jī)上使用

    模組與安卓系統(tǒng)、配置二維碼掃描模組的參數(shù)以及測試二維碼掃描模組的功能。一、在安卓一體機(jī)上安裝二維碼掃描模組1.1確定應(yīng)用場景與模組選擇在選擇二維碼
    的頭像 發(fā)表于 02-28 15:59 ?398次閱讀
    快速將<b class='flag-5'>二維碼</b>掃描識別模組嵌入集成到安卓一體機(jī)上使用

    工業(yè)視覺在條碼/二維碼識別領(lǐng)域的應(yīng)用

    工業(yè)視覺技術(shù)在條碼和二維碼識別領(lǐng)域的應(yīng)用日益廣泛,它通過高精度的圖像處理和識別算法,實現(xiàn)了對條碼和二維碼的快速、準(zhǔn)確識別。這項技術(shù)不僅提高了生產(chǎn)效率,還降低了人工錯誤的可能性,確保了產(chǎn)
    的頭像 發(fā)表于 11-18 16:28 ?693次閱讀
    工業(yè)視覺在條碼/<b class='flag-5'>二維碼</b>識別領(lǐng)域的應(yīng)用

    工業(yè)二維碼器在電子制造業(yè)中的應(yīng)用

    工業(yè)二維碼器在電子制造業(yè)中的應(yīng)用主要體現(xiàn)在以下幾個方面:▲生產(chǎn)追溯管理工業(yè)二維碼器通過對電子產(chǎn)品上的二維碼進(jìn)行快速掃描,實現(xiàn)了高效、
    的頭像 發(fā)表于 11-13 16:19 ?520次閱讀
    工業(yè)<b class='flag-5'>二維碼</b>讀<b class='flag-5'>碼</b>器在電子制造業(yè)中的應(yīng)用

    二維碼識讀設(shè)備有哪些類型

    隨著二維碼應(yīng)用的日益普及,各類二維碼識讀設(shè)備也應(yīng)運而生。這些設(shè)備不僅極大地方便了我們的日常生活,也為企業(yè)提供了更加高效便捷的服務(wù)。那么,你知道二維碼識讀設(shè)備都有哪些類型嗎?讓我們一起來了解一下。據(jù)
    的頭像 發(fā)表于 11-05 16:10 ?815次閱讀
    <b class='flag-5'>二維碼</b>識讀設(shè)備有哪些類型

    二維碼掃描頭設(shè)備嵌入到閘機(jī)上,實現(xiàn)掃手機(jī)屏幕完成簽到簽退

    在現(xiàn)代社會,隨著科技的飛速發(fā)展,二維碼技術(shù)已經(jīng)滲透到我們生活的方方面面,特別是在門禁管理、簽到簽退等場景中,二維碼掃描頭設(shè)備的嵌入應(yīng)用極大地提升了管理效率和用戶體驗。本文將探討二維碼
    的頭像 發(fā)表于 09-18 15:45 ?674次閱讀
    <b class='flag-5'>二維碼</b>掃描頭設(shè)備嵌入到閘機(jī)上,實現(xiàn)掃手機(jī)屏幕<b class='flag-5'>碼</b>完成簽到簽退

    工業(yè)二維碼掃描設(shè)備如何助力流水線生產(chǎn)?

    工業(yè)二維碼掃描設(shè)備被廣泛應(yīng)用于現(xiàn)代工廠的流水線作業(yè)中,它們能夠高效、準(zhǔn)確地讀取移動中的二維碼。這些掃器通常被設(shè)計為固定式或手持式,以適應(yīng)不同的生產(chǎn)環(huán)境和需求。固定式掃器安裝在特定位
    的頭像 發(fā)表于 08-12 14:56 ?620次閱讀
    工業(yè)<b class='flag-5'>二維碼</b>掃描設(shè)備如何助力流水線生產(chǎn)?

    如何為柜式終端設(shè)備選配(集成)二維碼模塊?

    隨著二維碼技術(shù)在各行各業(yè)的廣泛應(yīng)用,柜式終端設(shè)備如何高效集成二維碼模塊成為行業(yè)關(guān)注焦點。針對這一需求,本文將深入探討選擇與集成二維碼模塊的關(guān)鍵要素,助力企業(yè)精準(zhǔn)匹配,提升終端設(shè)備性能。
    的頭像 發(fā)表于 08-05 15:48 ?511次閱讀
    如何為柜式終端設(shè)備選配(集成)<b class='flag-5'>二維碼</b>模塊?

    Labview生成二維碼

    ?Labview 的一個Demo,生成二維碼。
    發(fā)表于 08-01 17:12 ?16次下載
    主站蜘蛛池模板: 最近在线观看免费完整视频 | 最近最新中文字幕在线第一页 | 免费一级毛片在线播放不收费 | 在线播放91灌醉迷j高跟美女 | 特黄特黄 | 国产乱码免费卡1卡二卡3卡四 | 毛片网站免费 | 99久久香蕉国产综合影院 | 夜夜爱视频 | 精品国产免费观看一区高清 | 久久66haose精品| 操国产美女| 色丁香婷婷 | 亚洲 欧美 日韩 在线 中文字幕 | 国产女主播精品大秀系列在线 | 欧美二级 | 麻豆三级在线播放 | 国产黄网站在线观看 | 年轻护士女三级 | 九九国产精品 | 亚洲性色成人 | 色老头在线精品视频在线播放 | 国产精品福利视频手机免费观看 | 91极品视频在线观看 | 四虎国产精品永久地址49 | 欧美射射射 | 午夜免费伦费影视在线观看 | 国模私拍一区二区三区 | xxxx日本老师hd | 性欧美性 | 综合天天 | 亚洲va久久久噜噜噜久久狠狠 | 1000部啪啪未满十八勿入中国 | 日本高清午夜色wwwσ | 色女仆影院| 亚洲高清色 | 视频在线观看免费 | 免费边摸边吃奶边叫床视频gif | 狠狠色噜噜狠狠狠狠五月婷 | 亚洲人成网站色7799在线观看 | 免费人成在线观看视频播放 |