# 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 |
||
---|---|---|
.. | ||
src/main | ||
.gitignore | ||
CHANGELOG.md | ||
LICENSE | ||
README.OpenSource | ||
README.md | ||
build-profile.json5 | ||
hvigorfile.ts | ||
index.ets | ||
oh-package.json5 |
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 ,请自由的享受和参与开源。