diff --git a/thirdparty/zbar/HPKBUILD b/thirdparty/zbar/HPKBUILD new file mode 100644 index 0000000000000000000000000000000000000000..0d7e698d3f2f574f24bf55128ba848155d12b95a --- /dev/null +++ b/thirdparty/zbar/HPKBUILD @@ -0,0 +1,88 @@ +# Maintainer: wupingyuan +pkgname=zbar +pkgver=0.10 +pkgrel=0 +pkgdesc="ZBar is an open source software suite for reading bar codes from various sources, such as video streams, image files and raw intensity sensors. It supports many popular symbologies (types of bar codes) including EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code." +url="https://zbar.sourceforge.net/" +archs=("armeabi-v7a" "arm64-v8a") +license=("LGPL2.1") +depends=("libpng") +makedepends=() +source="https://sourceforge.net/projects/$pkgname/files/$pkgname/$pkgver/$pkgname-$pkgver.tar.gz" + +autounpack=true +downloadpackage=true +patchflag=true +buildtools="configure" +builddir=$pkgname-$pkgver +packagename=$builddir.tar.gz +source envset.sh +host= + +prepare() { + if $patchflag + then + cd $builddir + # 由于版本问题,原库依赖的libpng库比较老,而当前lycium仓库中libpng比较新,因此需要更换接口:png_set_gray_1_2_4_to_8->png_set_expand_gray_1_2_4_to_8 + patch -p1 < `pwd`/../zbar_oh_pkg.patch + patchflag=false + cd $OLDPWD + fi + cp -rf $builddir $pkgname-$ARCH-build + if [ $ARCH == "armeabi-v7a" ] + then + setarm32ENV + fi + if [ $ARCH == "arm64-v8a" ] + then + setarm64ENV + fi + host=arm-linux +} + +build() { + cd $pkgname-$ARCH-build + ./configure "$@" --host=$host --disable-video --without-imagemagick --without-gtk --without-python --without-qt >> `pwd`/build.log 2>&1 + make -j4 >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $pkgname-$ARCH-build + make install >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + unset host + return $ret +} + +check() { + cd $pkgname-$ARCH-build + sed '$ascan_image: examples/scan_image.c' Makefile > temp_Makefile + mv temp_Makefile Makefile + sed '$a\\t$(CC) $(CFLAGS) examples/scan_image.c -o scan_image -lm -Iinclude/ -Lzbar/.libs -lzbar -L$(PNG_LIBS_DIR) -I$(PNG_INCLUDE_DIR) -lpng -lz' Makefile > temp_Makefile + mv temp_Makefile Makefile + make scan_image PNG_LIBS_DIR=$LYCIUM_ROOT/usr/libpng/$ARCH/lib PNG_INCLUDE_DIR=$LYCIUM_ROOT/usr/libpng/$ARCH/include >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + if [ $ARCH == "armeabi-v7a" ] + then + unsetarm32ENV + fi + if [ $ARCH == "arm64-v8a" ] + then + unsetarm64ENV + fi + echo "The test must be on an OpenHarmony device!" + # 解析二维码 + # ./scan_image qrcode.png + # 解析条形码 + # ./scan_image barcode.png + return $ret +} + +cleanbuild(){ + rm -rf ${PWD}/$builddir $builddir-armeabi-v7a-build $builddir-arm64-v8a-build #${PWD}/$packageName +} diff --git a/thirdparty/zbar/README.OpenSource b/thirdparty/zbar/README.OpenSource new file mode 100644 index 0000000000000000000000000000000000000000..1927a2ad3862d6f494dbbb2080e1e08348825733 --- /dev/null +++ b/thirdparty/zbar/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "zbar", + "License": "LGPL2.1", + "License File": "COPYING", + "Version Number": "0.10", + "Owner": "wupingyuan@huawei.com", + "Upstream URL": "https://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10.tar.gz", + "Description": "ZBar is an open source software suite for reading bar codes from various sources, such as video streams, image files and raw intensity sensors. It supports many popular symbologies (types of bar codes) including EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code." + } +] diff --git a/thirdparty/zbar/README_zh.md b/thirdparty/zbar/README_zh.md new file mode 100644 index 0000000000000000000000000000000000000000..b0fa86f9ed68165231433845c9338275a8f33abb --- /dev/null +++ b/thirdparty/zbar/README_zh.md @@ -0,0 +1,12 @@ +# zbar三方库说明 +## 功能简介 +zbar是一个条形码和二维码解析的库。 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Beta2 +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:0.10 +- 当前适配的功能:支持条形码和二维码解析 +- [LGPL2.1](https://zbar.sourceforge.net/) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/zbar/SHA512SUM b/thirdparty/zbar/SHA512SUM new file mode 100644 index 0000000000000000000000000000000000000000..e2bcaf13d8c50b234b255cd8be06c7ade7c5e360 --- /dev/null +++ b/thirdparty/zbar/SHA512SUM @@ -0,0 +1,2 @@ +9cc6446dd97d4ec1b72db8aa4662dc976ff951f1ab99055f04f3c8da2b93a4e044740f31eb66683efdf031e5f3472a983ccfa81a6224db8b394f43ab6d4d1e76 zbar-0.10.tar.gz +1bfdff7c6acb55e0d0d18f28daed47fd352ad3260f8464944f6ffcd205ed9249723fdb65494875625016fe081544f655c1ac9e5cfe42021d5d8473ce32de7ad8 zbar_oh_pkg.patch diff --git a/thirdparty/zbar/docs/hap_integrate.md b/thirdparty/zbar/docs/hap_integrate.md new file mode 100644 index 0000000000000000000000000000000000000000..95e80075ba23e380e617966a93fb86efc0340004 --- /dev/null +++ b/thirdparty/zbar/docs/hap_integrate.md @@ -0,0 +1,86 @@ +# zbar集成到应用hap +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +## 开发环境 +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) +## 编译三方库 +- 下载本仓库 + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/thirdparty/zbar #三方库zbar的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── zbar_oh_pkg.patch #补丁 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将zbar、libpng拷贝至tools/main目录下 + ``` + cd tpc_c_cplusplus + cp thirdparty/zbar tools/main -rf + cp thirdparty/libpng tools/main -rf + ``` +- 在tools目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + ``` + cd tools + ./build.sh libpng zbar + ``` +- 三方库头文件及生成的库 + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + ``` + zbar/arm64-v8a zbar/armeabi-v7a + libpng/arm64-v8a libpng/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 + ![thirdparty_install_dir](pic/zbar_install_dir.jpg) +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + ``` + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libzbar.so.0) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/zbar/${OHOS_ARCH}/include) + ``` + ![zbar_usage](pic/zbar_usage.jpg) +## 测试三方库 +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +- 将编译生成的scan_image可执行文件及条形码barcode.png、二维码qrcode.png准备好 + +- 将准备好的文件推送到开发板,在windows命令行进行如下操作 + + ``` + hdc_std shell mount -o remount,rw / #修改系统权限为可读写 + hdc_std file send scan_image /data #将可执行文件推入开发板data目录 + hdc_std file send barcode.png /data #将测试文件推入开发板data目录 + hdc_std file send qrcode.png /data #将测试文件推入开发板data目录 + hdc_std file send libc++_shared.so /system/lib64 + hdc_std file send libzbar.so.0 /system/lib64 + hdc_std file send libpng16.so.16 /system/lib64 + hdc_std shell #进入开发板 + chmod 777 scan_image #添加权限 + ./scan_image barcode.png #执行测试用例 + ./scan_image qrcode.png + ``` + + ![zbar_test](pic/zbar_test.jpg) + +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/zbar/docs/pic/zbar_install_dir.jpg b/thirdparty/zbar/docs/pic/zbar_install_dir.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd69c551c49a9b82068868a9a77aa8d352121489 Binary files /dev/null and b/thirdparty/zbar/docs/pic/zbar_install_dir.jpg differ diff --git a/thirdparty/zbar/docs/pic/zbar_test.jpg b/thirdparty/zbar/docs/pic/zbar_test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37ac4a9c42de2b5bf1c8cc261c0840a90d769396 Binary files /dev/null and b/thirdparty/zbar/docs/pic/zbar_test.jpg differ diff --git a/thirdparty/zbar/docs/pic/zbar_usage.jpg b/thirdparty/zbar/docs/pic/zbar_usage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..39760300b946732afc3b07da2bc9f74a3ccfe9e1 Binary files /dev/null and b/thirdparty/zbar/docs/pic/zbar_usage.jpg differ diff --git a/thirdparty/zbar/zbar_oh_pkg.patch b/thirdparty/zbar/zbar_oh_pkg.patch new file mode 100644 index 0000000000000000000000000000000000000000..afa281ff40c54f80e7b1f67e9137a22c3b399ca3 --- /dev/null +++ b/thirdparty/zbar/zbar_oh_pkg.patch @@ -0,0 +1,12 @@ +diff -Naur zbar-0.10/examples/scan_image.c zbar-0.10-patch/examples/scan_image.c +--- zbar-0.10/examples/scan_image.c 2009-10-24 02:16:44.000000000 +0800 ++++ zbar-0.10-patch/examples/scan_image.c 2023-04-25 09:35:19.209035532 +0800 +@@ -30,7 +30,7 @@ + if(color & PNG_COLOR_TYPE_PALETTE) + png_set_palette_to_rgb(png); + if(color == PNG_COLOR_TYPE_GRAY && bits < 8) +- png_set_gray_1_2_4_to_8(png); ++ png_set_expand_gray_1_2_4_to_8(png); + if(bits == 16) + png_set_strip_16(png); + if(color & PNG_COLOR_MASK_ALPHA)