diff --git a/code/DocsSample/Media/Image/ImageEffect/entry/src/main/cpp/backend/image_edit.cpp b/code/DocsSample/Media/Image/ImageEffect/entry/src/main/cpp/backend/image_edit.cpp index ddd16c5a0482d8cb581a29e70b1b62fd9cea430c..1ab28bfe04b3befaf1c992c50a08536988bba7e8 100644 --- a/code/DocsSample/Media/Image/ImageEffect/entry/src/main/cpp/backend/image_edit.cpp +++ b/code/DocsSample/Media/Image/ImageEffect/entry/src/main/cpp/backend/image_edit.cpp @@ -515,32 +515,32 @@ napi_value ImageEdit::LookupFilterInfo(napi_env env, napi_callback_info info) std::string filterName = CommonUtils::GetStringArgument(env, args[EXPECTED_ARGS_ZERO]); // [Start image_effect_lookup_filter_info_by_name] - OH_EffectFilterInfo *effectInfo = OH_EffectFilterInfo_Create(); + OH_EffectFilterInfo *filterInfo = OH_EffectFilterInfo_Create(); // 示例代码: 传入nullptr的format, 获取OH_Formats的size - ImageEffect_ErrorCode errorCode = OH_EffectFilter_LookupFilterInfo(filterName.c_str(), effectInfo); + ImageEffect_ErrorCode errorCode = OH_EffectFilter_LookupFilterInfo(filterName.c_str(), filterInfo); CHECK_AND_RETURN_RET_LOG(errorCode == ImageEffect_ErrorCode::EFFECT_SUCCESS, result, "OH_EffectFilter_LookupFilterInfo fail! errorCode = %{public}d", errorCode); char *name = nullptr; - OH_EffectFilterInfo_GetFilterName(effectInfo, &name); + OH_EffectFilterInfo_GetFilterName(filterInfo, &name); uint32_t supportedBufferTypesCount = 0; ImageEffect_BufferType *bufferTypeArray = nullptr; - OH_EffectFilterInfo_GetSupportedBufferTypes(effectInfo, &supportedBufferTypesCount, &bufferTypeArray); + OH_EffectFilterInfo_GetSupportedBufferTypes(filterInfo, &supportedBufferTypesCount, &bufferTypeArray); uint32_t supportedFormatsCount = 0; ImageEffect_Format *formatArray = nullptr; - OH_EffectFilterInfo_GetSupportedFormats(effectInfo, &supportedFormatsCount, &formatArray); + OH_EffectFilterInfo_GetSupportedFormats(filterInfo, &supportedFormatsCount, &formatArray); LOG_I("LookupFilterInfo: name=%{public}s, bufferTypesCount=%{public}d, formatsCount=%{public}d", name, supportedBufferTypesCount, supportedFormatsCount); - std::string infoStr = CommonUtils::EffectInfoToString(effectInfo); + std::string infoStr = CommonUtils::EffectInfoToString(filterInfo); LOG_I("LookupFilterInfo:%{public}s", infoStr.c_str()); status = napi_create_string_utf8(env, infoStr.c_str(), strlen(infoStr.c_str()), &result); CHECK_AND_RETURN_RET_LOG(status == napi_ok, result, "napi_create_string_utf8 fail!"); - OH_EffectFilterInfo_Release(effectInfo); + OH_EffectFilterInfo_Release(filterInfo); // [End image_effect_lookup_filter_info_by_name] return result; } @@ -741,9 +741,9 @@ napi_value ImageEdit::RegisterCustomBrightness() OH_EffectFilterInfo_SetSupportedBufferTypes(customFilterInfo, sizeof(bufferTypeArray) / sizeof(ImageEffect_BufferType), bufferTypeArray); // 设置自定义滤镜所支持的像素格式。 - ImageEffect_Format formatArray = ImageEffect_Format::EFFECT_PIXEL_FORMAT_RGBA8888; + ImageEffect_Format formatArray[] = {ImageEffect_Format::EFFECT_PIXEL_FORMAT_RGBA8888}; OH_EffectFilterInfo_SetSupportedFormats(customFilterInfo, - sizeof(formatArray) / sizeof(ImageEffect_Format), &formatArray); + sizeof(formatArray) / sizeof(ImageEffect_Format), formatArray); // [End image_effect_create_custom_filter_info] // [Start image_effect_custom_filter] // 自定义滤镜具体实现。 @@ -807,9 +807,9 @@ napi_value ImageEdit::RegisterCustomCrop() OH_EffectFilterInfo_SetSupportedBufferTypes(customFilterInfo, sizeof(bufferTypeArray) / sizeof(ImageEffect_BufferType), bufferTypeArray); // 设置自定义滤镜所支持的像素格式。 - ImageEffect_Format formatArray = ImageEffect_Format::EFFECT_PIXEL_FORMAT_RGBA8888; + ImageEffect_Format formatArray[] = {ImageEffect_Format::EFFECT_PIXEL_FORMAT_RGBA8888}; OH_EffectFilterInfo_SetSupportedFormats(customFilterInfo, - sizeof(formatArray) / sizeof(ImageEffect_Format), &formatArray); + sizeof(formatArray) / sizeof(ImageEffect_Format), formatArray); // 自定义滤镜具体实现。 delegateCrop = { .setValue = @@ -895,12 +895,12 @@ napi_value ImageEdit::getSurfaceId(napi_env env, napi_callback_info info) std::string surfaceId = CommonUtils::GetStringArgument(env, args[EXPECTED_ARGS_ZERO]); // [Start image_effect_get_surface_id] // 根据SurfaceId创建NativeWindow,注意创建出来的NativeWindow在使用结束后需要主动调用OH_NativeWindow_DestoryNativeWindow进行释放。 - uint64_t iSurfaceId; + uint64_t outputSurfaceId; std::istrstream iss(surfaceId.c_str()); - iss >> iSurfaceId; - LOG_I("iSurfaceId %{public}llu", iSurfaceId); + iss >> outputSurfaceId; + LOG_I("outputSurfaceId %{public}llu", outputSurfaceId); OHNativeWindow *outputNativeWindow = nullptr; - int32_t res = OH_NativeWindow_CreateNativeWindowFromSurfaceId(iSurfaceId, &outputNativeWindow); + int32_t res = OH_NativeWindow_CreateNativeWindowFromSurfaceId(outputSurfaceId, &outputNativeWindow); CHECK_AND_RETURN_RET_LOG(res == 0, result, "OH_NativeWindow_CreateNativeWindowFromSurfaceId fail!"); OH_ImageEffect *imageEffect = OH_ImageEffect_Create("imageEdit"); diff --git a/code/DocsSample/Media/Image/ImageEffect/entry/src/main/ets/pages/ImageEditPage.ets b/code/DocsSample/Media/Image/ImageEffect/entry/src/main/ets/pages/ImageEditPage.ets index b611ba22561758e034648e55feddad1f58171120..8c0d55029947610e15d109865d860b9bb18971d7 100644 --- a/code/DocsSample/Media/Image/ImageEffect/entry/src/main/ets/pages/ImageEditPage.ets +++ b/code/DocsSample/Media/Image/ImageEffect/entry/src/main/ets/pages/ImageEditPage.ets @@ -305,7 +305,7 @@ struct ImageEditPage { } console.info(`savePixel to ${filePath}`); let uri = fileUri.getUriFromPath(filePath); - let imageData = await imagePackerApi.packing(pixelMap, packOption); + let imageData = await imagePackerApi.packToData(pixelMap, packOption); let file = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); let writeLen = fs.writeSync(file.fd, imageData); fs.closeSync(file); diff --git a/code/DocsSample/Media/Image/NdkPixelMap/entry/src/main/cpp/libimage/source.cpp b/code/DocsSample/Media/Image/NdkPixelMap/entry/src/main/cpp/libimage/source.cpp index e17f0648376d004db29f004b732e2e7ddb6856a7..0a461a533ae6f8845b69b8ec859cfcea7f253c1c 100644 --- a/code/DocsSample/Media/Image/NdkPixelMap/entry/src/main/cpp/libimage/source.cpp +++ b/code/DocsSample/Media/Image/NdkPixelMap/entry/src/main/cpp/libimage/source.cpp @@ -32,7 +32,7 @@ const uint32_t NAME_SIZE = 1024; static napi_value getJsResult(napi_env env, Image_ErrorCode errCode) { - napi_value result; + napi_value result = nullptr; napi_create_int32(env, errCode, &result); return result; } diff --git a/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/common/Decode.ets b/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/common/Decode.ets index 5dc40abb00b42db84f694e8abbd73680d1300e76..8bd603bcde4c5bf1434b171bd2906cf9d9a6a7c1 100644 --- a/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/common/Decode.ets +++ b/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/common/Decode.ets @@ -44,6 +44,7 @@ export class Decode { public getImageSourceByFilePath(fileName: string): image.ImageSource { // [Start pixelmap_get_image_by_filepath] const context: Context = getContext(this); + // fileName可使用'/test.jpg',也可以根据实际环境传入其他图片名 const filePath: string = context.cacheDir + fileName; // [End pixelmap_get_image_by_filepath] // path为已获得的沙箱路径 @@ -62,6 +63,7 @@ export class Decode { public getImageSourceByFd(fileName: string): image.ImageSource { // [Start pixelmap_get_image_by_fd] const context: Context = getContext(this); + // fileName可使用'/test.jpg',也可以根据实际环境传入其他图片名 const filePath = context.cacheDir + fileName; const file: fs.File = fs.openSync(filePath, fs.OpenMode.READ_WRITE); const fd: number = file?.fd; @@ -86,6 +88,7 @@ export class Decode { // [End pixelmap_get_resource_manager_in_arraybuffer] return new Promise((resolve, reject) => { // [Start pixelmap_get_arraybuffer_of_resource] + // fileName可使用'/test.jpg',也可以根据实际环境传入其他图片名 resourceMgr.getRawFileContent(fileName).then((fileData: Uint8Array) => { Logger.info('getImageSourceByArrayBuffer: ', 'Succeeded in getting RawFileContent'); // 获取图片的ArrayBuffer @@ -116,6 +119,7 @@ export class Decode { // [End pixelmap_get_resource_manager_in_raw_file_descriptor] return new Promise((resolve, reject) => { // [Start pixelmap_get_rawfd_by_resource_manager] + // fileName可使用'/test.jpg',也可以根据实际环境传入其他图片名 resourceMgr.getRawFd(fileName).then((rawFileDescriptor: resourceManager.RawFileDescriptor) => { Logger.info('getImageSourceByRawFileDescriptor: ', 'Succeeded in getting RawFileDescriptor'); // [Start pixelmap_create_image_source_by_rawfd] diff --git a/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/common/Encode.ets b/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/common/Encode.ets index cae412fe526350d778181a5e8a896d94f729dd35..c838df34ada5e884cba14f78ca3def4fe8a33ca7 100644 --- a/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/common/Encode.ets +++ b/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/common/Encode.ets @@ -44,12 +44,14 @@ export async function encodeToStreamByPixelMap(pixelMap: image.PixelMap, isHdr:b // [End pixelmap_hdr_content_encoding] } // [Start pixelmap_encoding_through_pixelmap] - imagePackerApi.packing(pixelMap, packOpts).then((data: ArrayBuffer) => { + imagePackerApi.packToData(pixelMap, packOpts).then((data: ArrayBuffer) => { // data 为打包获取到的文件流,写入文件保存即可得到一张图片 fs.write(file.fd, data); Logger.info('Succeeded to pack the image and write to the file.'); }).catch((error: BusinessError) => { Logger.error('Failed to pack the image. And the error is: ', String(error)); + }).finally(()=>{ + fs.closeSync(file.fd); }) // [End pixelmap_encoding_through_pixelmap] } @@ -68,12 +70,14 @@ export async function encodeToStreamByImageSource(imageSource:image.ImageSource, const path: string = context.cacheDir + '/pixel_map.jpg'; let file = fs.openSync(path, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE); // [Start pixelmap_encoding_through_image_source] - imagePackerApi.packing(imageSource, packOpts).then( (data : ArrayBuffer) => { + imagePackerApi.packToData(imageSource, packOpts).then( (data : ArrayBuffer) => { // data 为打包获取到的文件流,写入文件保存即可得到一张图片 fs.write(file.fd, data); Logger.info('Succeeded to pack the image and write to the file.'); }).catch((error : BusinessError) => { Logger.error('Failed to pack the image. And the error is: ', String(error)); + }).finally(()=>{ + fs.closeSync(file.fd); }) // [End pixelmap_encoding_through_image_source] } @@ -97,6 +101,8 @@ export async function encodeToFileByPixelMap(pixelMap: image.PixelMap,isHdr:bool Logger.info('Succeeded to pack the image and write to the file.'); }).catch((error : BusinessError) => { Logger.error('Failed to pack the image. And the error is: ', String(error)); + }).finally(()=>{ + fs.closeSync(file.fd); }) // [End pixelmap_encoding_into_file_through_pixelmap] } @@ -120,6 +126,8 @@ export async function encodeToFileByImageSource(imageSource:image.ImageSource,is Logger.info('Succeeded to pack the image and write to the file.'); }).catch((error : BusinessError) => { Logger.error('Failed to pack the image. And the error is: ', String(error)); + }).finally(()=>{ + fs.closeSync(file.fd); }) // [End pixelmap_encoding_into_file_through_image_source] } \ No newline at end of file diff --git a/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/pages/Index.ets b/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/pages/Index.ets index 5c87b95a1a3e34f5f683e71dde7f083e2d20bab4..11c6e544ba30e67fd74e48c4ede3c8c491a3c056 100644 --- a/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/pages/Index.ets +++ b/code/DocsSample/Media/Image/PixelMap/entry/src/main/ets/pages/Index.ets @@ -213,8 +213,8 @@ struct Index { // 获取图片大小 await this.pixelMap.getImageInfo().then((info: image.ImageInfo) => { this.imageInfo = info; - Logger.info('info.width = ', info.size.width.toString()) - Logger.info('info.height = ', info.size.height.toString()) + Logger.info('info.width = ', info.size.width.toString()); + Logger.info('info.height = ', info.size.height.toString()); }).catch((err: BusinessError) => { Logger.error('Failed to obtain the image pixel map information.And the error is: ', String(err)); }); diff --git a/code/DocsSample/Media/Image/PixelMap/entry/src/ohosTest/ets/test/Ability.test.ets b/code/DocsSample/Media/Image/PixelMap/entry/src/ohosTest/ets/test/Ability.test.ets index 9bc0a37cff8648da03bf4f8b7210346514d6420b..7b5e1fd889e1c7660a139b1fc52cffb858766e8c 100644 --- a/code/DocsSample/Media/Image/PixelMap/entry/src/ohosTest/ets/test/Ability.test.ets +++ b/code/DocsSample/Media/Image/PixelMap/entry/src/ohosTest/ets/test/Ability.test.ets @@ -122,7 +122,7 @@ export default function abilityTest() { * @tc.name CropImage_001 * @tc.desc 点击裁剪 */ - it('CropImage_001', 1, async (done: Function) => { + it('CropImage_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'CropImage_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME); @@ -142,7 +142,7 @@ export default function abilityTest() { * @tc.name scaleImage_001 * @tc.desc 点击缩放 */ - it('scaleImage_001', 2, async (done: Function) => { + it('scaleImage_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'CropImage_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME); @@ -161,7 +161,7 @@ export default function abilityTest() { * @tc.name scaleImage_001 * @tc.desc 点击向右下移动 */ - it('translateImage_001', 3, async (done: Function) => { + it('translateImage_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'translateImage_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME); @@ -180,7 +180,7 @@ export default function abilityTest() { * @tc.name clockwiseRotateImage_001 * @tc.desc 点击顺时针旋转 */ - it('clockwiseRotateImage_001', 4, async (done: Function) => { + it('clockwiseRotateImage_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'clockwiseRotateImage_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME); @@ -200,7 +200,7 @@ export default function abilityTest() { * @tc.name verticalFlipImage_001 * @tc.desc 点击垂直翻转 */ - it('verticalFlipImage_001', 5, async (done: Function) => { + it('verticalFlipImage_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'verticalFlipImage_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME); @@ -219,7 +219,7 @@ export default function abilityTest() { * @tc.name horizontalFlipImage_001 * @tc.desc 点击水平翻转 */ - it('horizontalFlipImage_001', 6, async (done: Function) => { + it('horizontalFlipImage_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'horizontalFlipImage_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME); @@ -238,7 +238,7 @@ export default function abilityTest() { * @tc.name bitmapOperation_001 * @tc.desc 点击位图操作 */ - it('bitmapOperation_001', 7, async (done: Function) => { + it('bitmapOperation_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'bitmapOperation_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME); @@ -258,7 +258,7 @@ export default function abilityTest() { * @tc.name bitmapOperationAll_001 * @tc.desc 点击位图操作全部 */ - it('bitmapOperationAll_001', 8, async (done: Function) => { + it('bitmapOperationAll_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'bitmapOperationAll_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME); @@ -277,7 +277,7 @@ export default function abilityTest() { * @tc.name changeOpacity_001 * @tc.desc 点击设置透明度 */ - it('changeOpacity_001', 9, async (done: Function) => { + it('changeOpacity_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'changeOpacity_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME); @@ -296,7 +296,7 @@ export default function abilityTest() { * @tc.name saveImage_001 * @tc.desc 点击保存图片 */ - it('saveImage_001', 10, async (done: Function) => { + it('saveImage_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'saveImage_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME); @@ -315,7 +315,7 @@ export default function abilityTest() { * @tc.name openImage_001 * @tc.desc 点击打开图片 */ - it('openImage_001', 11, async (done: Function) => { + it('openImage_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'openImage_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME); @@ -333,7 +333,7 @@ export default function abilityTest() { * @tc.name editEXIF_001 * @tc.desc 点击编辑EXIF信息 */ - it('editEXIF_001', 12, async (done: Function) => { + it('editEXIF_001', 0, async (done: Function) => { hilog.info(DOMAIN, TAG, BUNDLE + 'editEXIF_001 begin'); let driver = Driver.create(); await driver.delayMs(DELAY_TIME);