diff --git a/packages/react-native-executorch/package.json b/packages/react-native-executorch/package.json index b17624f0a..c6219676c 100644 --- a/packages/react-native-executorch/package.json +++ b/packages/react-native-executorch/package.json @@ -1,6 +1,6 @@ { "name": "react-native-executorch", - "version": "0.7.1", + "version": "0.7.2", "description": "An easy way to run AI models in React Native with ExecuTorch", "source": "./src/index.ts", "main": "./lib/module/index.js", @@ -67,8 +67,8 @@ }, "peerDependencies": { "expo": ">=54.0.0", - "expo-asset": "^12.0.0", - "expo-file-system": "^19.0.0", + "expo-asset": ">=12.0.0", + "expo-file-system": ">=19.0.0", "react": "*", "react-native": "*" }, diff --git a/packages/react-native-executorch/src/modules/computer_vision/TextToImageModule.ts b/packages/react-native-executorch/src/modules/computer_vision/TextToImageModule.ts index 494c1a052..4303a156f 100644 --- a/packages/react-native-executorch/src/modules/computer_vision/TextToImageModule.ts +++ b/packages/react-native-executorch/src/modules/computer_vision/TextToImageModule.ts @@ -1,7 +1,7 @@ import { ResourceFetcher } from '../../utils/ResourceFetcher'; import { ResourceSource } from '../../types/common'; import { BaseModule } from '../BaseModule'; -import { Buffer } from 'buffer'; + import { PNG } from 'pngjs/browser'; import { RnExecutorchErrorCode } from '../../errors/ErrorCodes'; import { RnExecutorchError } from '../../errors/errorUtils'; @@ -115,10 +115,15 @@ export class TextToImageModule extends BaseModule { return ''; } const png = new PNG({ width: imageSize, height: imageSize }); - png.data = Buffer.from(outputArray); + png.data = outputArray as unknown as Buffer; const pngBuffer = PNG.sync.write(png, { colorType: 6 }); - const pngString = pngBuffer.toString('base64'); - return pngString; + const pngArray = new Uint8Array(pngBuffer as unknown as ArrayBufferLike); + let binary = ''; + const chunkSize = 8192; + for (let i = 0; i < pngArray.length; i += chunkSize) { + binary += String.fromCharCode(...pngArray.subarray(i, i + chunkSize)); + } + return btoa(binary); } /** diff --git a/yarn.lock b/yarn.lock index 1ca8d5d29..99f93c144 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12966,8 +12966,8 @@ __metadata: zod: "npm:^3.25.0" peerDependencies: expo: ">=54.0.0" - expo-asset: ^12.0.0 - expo-file-system: ^19.0.0 + expo-asset: ">=12.0.0" + expo-file-system: ">=19.0.0" react: "*" react-native: "*" languageName: unknown