gpt4 book ai didi

android - React Native Android] 调整图片大小并上传到后端服务器

转载 作者:行者123 更新时间:2023-12-05 00:09:19 28 4
gpt4 key购买 nike

用设备拍摄的照片很大。我想在将它们调整(缩放)到更合理的尺寸(小于 800x800)后将它们上传到我的后端服务器。我希望使用 ImageEditor 模块的 coprImage() 函数,但是用大图像运行它会导致 OutOfMemory 异常。我假设由于该模块尝试解码大图像并将其存储在内存中,所以应用程序崩溃了。

我需要的是:

输入

{
width: 3100,
height: 2500,
uri: content://android/1 (some location in Android device)
}

输出

{
width: 800,
height: 650,
uri: content://android/1/resized (some location in Android device)
}

然后我可以获取此 uri 以将图片发送到我的后端服务器,并从设备中删除调整大小的照片。

我假设我必须编写一个 NativeModule,这样我就可以调整图像大小而无需将大的解码图像加载到内存中。 React Native 的 Image 组件使用 Fresco在渲染它们之前处理调整大小,但我不认为它提供了一种调整图像大小并将其临时保存在 fs 中的方法。

如有任何帮助,我们将不胜感激。

引用资料:

  1. https://developer.android.com/training/displaying-bitmaps/load-bitmap.html
  2. http://frescolib.org/docs/resizing-rotating.html
  3. https://facebook.github.io/react-native/docs/images.html
  4. Memory efficient image resize in Android

最佳答案

Expo 库有一个图像操纵器,可以调整大小等等:

import { ImageManipulator } from 'expo';

...

const manipResult = await ImageManipulator.manipulate(
imageUri,
[{ resize: { width: 640, height: 480 } }],
{ format: 'jpg' }
);

manipResult 将返回具有新 uri、宽度和高度的对象。

在这里找到它: https://docs.expo.io/versions/latest/sdk/imagemanipulator.html

关于android - React Native Android] 调整图片大小并上传到后端服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40149481/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com