ImageKnife/gpu_transform
zgf 4df2d51b7e Merge remote-tracking branch 'origin/3.x'
# Conflicts:
#	CHANGELOG.md
#	OAT.xml
#	README.md
#	build-profile.json5
#	entry/oh-package.json5
#	entry/src/main/ets/pages/UserPage.ets
#	entry/src/main/ets/pages/dataShareUriLoadPage.ets
#	entry/src/main/ets/pages/imageknifeTestCaseIndex.ets
#	entry/src/main/ets/pages/index.ets
#	entry/src/main/ets/pages/testImageKnifeHttpRequestHeader.ets
#	entry/src/main/ets/pages/testImageKnifeOptionChangedPage5.ets
#	entry/src/main/ets/pages/testManyNetImageLoadWithPage2.ets
#	entry/src/main/module.json5
#	entry/src/main/resources/base/element/string.json
#	entry/src/main/resources/base/profile/main_pages.json
#	entry/src/ohosTest/ets/test/DefaultJobQueueTest.test.ets
#	entry/src/ohosTest/ets/test/List.test.ets
#	entry/src/ohosTest/ets/test/diskLruCache.test.ets
#	entry/src/ohosTest/ets/test/imageknife.test.ets
#	entry/src/ohosTest/ets/test/requestoption.test.ets
#	entry/src/ohosTest/module.json5
#	gpu_transform/CHANGELOG.md
#	gpu_transform/oh-package.json5
#	library/index.ets
#	library/oh-package.json5
#	library/src/main/ets/SendableData.ets
#	library/src/main/ets/components/cache/DiskCacheEntry.ets
#	library/src/main/ets/components/cache/DiskLruCache.ets
#	library/src/main/ets/components/cache/FileUtils.ets
#	library/src/main/ets/components/cache/LruCache.ets
#	library/src/main/ets/components/imageknife/ImageKnife.ets
#	library/src/main/ets/components/imageknife/ImageKnifeComponent.ets
#	library/src/main/ets/components/imageknife/ImageKnifeData.ets
#	library/src/main/ets/components/imageknife/ImageKnifeDrawFactory.ets
#	library/src/main/ets/components/imageknife/ImageKnifeOption.ets
#	library/src/main/ets/components/imageknife/RequestOption.ets
#	library/src/main/ets/components/imageknife/TaskParams.ets
#	library/src/main/ets/components/imageknife/constants/Constants.ets
#	library/src/main/ets/components/imageknife/holder/ErrorHolderManager.ets
#	library/src/main/ets/components/imageknife/holder/PlaceHolderManager.ets
#	library/src/main/ets/components/imageknife/holder/RetryHolderManager.ets
#	library/src/main/ets/components/imageknife/interface/IParseImage.ets
#	library/src/main/ets/components/imageknife/networkmanage/DownloadClient.ets
#	library/src/main/ets/components/imageknife/networkmanage/HttpDownloadClient.ets
#	library/src/main/ets/components/imageknife/networkmanage/IDataFetch.ets
#	library/src/main/ets/components/imageknife/networkmanage/LoadDataShareFileClient.ets
#	library/src/main/ets/components/imageknife/networkmanage/LoadLocalFileClient.ets
#	library/src/main/ets/components/imageknife/networkmanage/NetworkDownloadClient.ets
#	library/src/main/ets/components/imageknife/requestmanage/MemoryCacheProxy.ets
#	library/src/main/ets/components/imageknife/requestmanage/RequestManager.ets
#	library/src/main/ets/components/imageknife/resourcemanage/ParseResClientBase64.ets
#	library/src/main/ets/components/imageknife/transform/TransformUtils.ets
#	library/src/main/ets/components/imageknife/utils/ParseImageUtil.ets
#	library/src/main/ets/components/imageknife/utils/gif/GIFFrame.ts
#	library/src/main/ets/components/imageknife/utils/gif/GIFParseImpl.ets
#	library/src/main/ets/components/imageknife/utils/gif/IParseGif.ets
#	library/src/main/ets/components/imageknife/utils/svg/SVGParseImpl.ets
#	library/src/main/ets/downsampling/BaseDownsampling.ets
#	library/src/main/ets/downsampling/DownsampleStartegy.ets
#	library/src/main/ets/downsampling/Downsampler.ets
#	library/src/main/ets/networkmanage/CustomDataFetchClient.ets
#	library/src/main/ets/networkmanage/DataFetchResult.ets
#	library/src/main/ets/networkmanage/RequestData.ets
#	library/src/main/ets/utils/CalculatePixelUtils.ets
#	library/src/main/ets/utils/DefaultJobQueue.ets
#	library/src/main/ets/utils/IJobQueue.ets
#	library/src/main/ets/utils/MResource.ets
#	library/src/main/ets/utils/base/AsyncLock.ts
#	oh-package.json5
#	sharedlibrary/src/main/ets/Index.ets
#	sharedlibrary/src/ohosTest/ets/test/List.test.ets
2024-07-15 15:54:20 +08:00
..
src/main 修改门禁编译问题 修改点如下:修改src/main/cpp/util/DebugLog.h文件中hilog的大小写 2024-06-07 18:04:37 +08:00
.gitignore add gpu transform module 2023-02-02 16:59:13 +08:00
CHANGELOG.md 修改门禁编译问题 修改点如下:修改src/main/cpp/util/DebugLog.h文件中hilog的大小写 2024-06-07 18:04:37 +08:00
LICENSE update code because of some idea 2023-02-22 10:55:02 +08:00
README.OpenSource update code because of some idea 2023-02-22 10:55:02 +08:00
README.md 支持x86编译 2024-04-02 03:03:09 +00:00
build-profile.json5 gpu_transform安全编译开启Strip和Ftrapv 2024-04-17 17:48:04 +08:00
hvigorfile.ts add gpu transform module 2023-02-02 16:59:13 +08:00
index.ets add gpu transform module 2023-02-02 16:59:13 +08:00
oh-package.json5 修改门禁编译问题 修改点如下:修改src/main/cpp/util/DebugLog.h文件中hilog的大小写 2024-06-07 18:04:37 +08:00

README.md

gpu_transform

该module通过获取图片的buffer数据使用openGL、着色器Shader操作GPU达到图片滤波器的效果。

本项目基于开源库 android-gpuimage 进行OpenHarmony的自研版本

下载安装

    ohpm install @ohos/gpu_transform

例子说明

    //获取像素点数据
    let bufferData = new ArrayBuffer(bitmap.getPixelBytesNumber());
    await bitmap.readPixelsToBuffer(bufferData);
    
    // 使用GPUImageVignetterFilter过滤器
    let filter = new GPUImageVignetterFilter();
    filter.setImageData(bufferData, targetWidth, targetHeight);
    filter.setVignetteCenter(this.centerPoint);
    filter.setVignetteColor(this.vignetteColor);
    filter.setVignetteStart(this.vignetteSpace[0]);
    filter.setVignetteEnd(this.vignetteSpace[1]);
    
    //获取经过gpu处理的像素点数据
    let buf = await filter.getPixelMapBuf(0, 0, targetWidth, targetHeight)
    
    //像素点数据写入
    bitmap.writeBufferToPixels(buf);
    

滤波器类型说明

滤波器类型 描述
GPUImageBlurFilter 模糊滤波器
GPUImageBrightnessFilter 亮度滤波器
GPUImageColorInvertFilter 颜色反转滤波器
GPUImageContrastFilter 对比度滤波器
GPUImageGrayscaleFilter 灰色滤波器
GPUImageKuwaharaFilter 桑原滤波器
GPUImagePixelationFilter 马赛克滤波器
GPUImageSepiaToneFilter 乌墨色滤波器
GPUImageSketchFilter 素描滤波器
GPUImageSwirlFilter 扭曲滤波器
GPUImageToonFilter 动画滤波器
GPUImageVignetterFilter 装饰滤波器

目录结构

/gpu_transform/src/main
    --cpp
        --common         # napi公共方法封装
        --constant       # 顶点、片元着色器
        --napi           # native入口
        --render         # 绘制
        --util           # 工具层
    --ets
        --filter         # 各种滤波器
        --gl             # native的js层
        --interface      # 接口

约束与限制

在下述版本验证通过:

  • DevEco Studio (5.0.3.122), SDK: API12 (5.0.0.17)

  • DevEco Studio: (4.1.3.414), SDK: API11 (4.1.0.56)

贡献代码

使用过程中发现任何问题都可以提 issue 给我们,当然,我们也非常欢迎你给我们发 PR

开源协议

本项目基于 Apache License 2.0 ,请自由的享受和参与开源。