文档https://js.tensorflow.org/api_react_native/0.2.3/#decodeJpeg中有一个示例,但它仅适用于按URL提取的情况。如果我在设备上存储了图像的URI,该怎么办?
答案 0 :(得分:0)
解决方案在this issue
中给出为了清楚起见,我在这里报告:
深入了解它似乎不太适合加载这些类型的文件。我们的自定义抓取尝试尝试实现的API对于未定义的file://方案url保留行为。即使在看起来可行的地方,我也可能不会依靠它。取而代之的是,我将在反应本机中使用现有的文件读取机制来获取数据。您希望能够以两种格式之一读取文件数据:
UInt8Array base64编码的字符串(然后将其转换为UInt8Array) 这是一些使用expo-filesystem的代码的框架,您可以使其适应代码。我们在bundleResourceIO模型加载器中执行了类似的操作(尽管我们使用其他库来读取文件)。
import * as FileSystem from 'expo-file-system';
const fileUri = 'NON-HTTP-URI-GOES-HERE';
const imgB64 = await FileSystem.readAsStringAsync(fileUri, {
encoding: FileSystem.EncodingType.Base64,
});
const imgBuffer = tf.util.encodeString(imgB64, 'base64').buffer;
const raw = new Uint8Array(imgBuffer)
const imageTensor = decodeJpeg(raw);