mirror of
https://github.com/status-im/react-native.git
synced 2025-01-13 19:15:05 +00:00
10ebcbcf45
Summary: ImageEditor.cropImage creates a temporary file when downloading images https://fburl.com/07r68w9s This temporary file can be stored on external storage on android. External storage is accessible to any other application on the device, which could possibly leak images. Using external storage may be unavoidable. I've voiced my opinion and solicited others on T31548988. Once a good policy is agreed upon, we can implement it. For now, I'm adding this comment to make it explicit how images are cached. Reviewed By: achen1 Differential Revision: D8837808 fbshipit-source-id: 02341bc94a1c95340390a713b76fe85603fd8f1b
73 lines
1.9 KiB
JavaScript
73 lines
1.9 KiB
JavaScript
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow
|
|
* @format
|
|
*/
|
|
'use strict';
|
|
|
|
const RCTImageEditingManager = require('NativeModules').ImageEditingManager;
|
|
|
|
type ImageCropData = {
|
|
/**
|
|
* The top-left corner of the cropped image, specified in the original
|
|
* image's coordinate space.
|
|
*/
|
|
offset: {
|
|
x: number,
|
|
y: number,
|
|
},
|
|
/**
|
|
* The size (dimensions) of the cropped image, specified in the original
|
|
* image's coordinate space.
|
|
*/
|
|
size: {
|
|
width: number,
|
|
height: number,
|
|
},
|
|
/**
|
|
* (Optional) size to scale the cropped image to.
|
|
*/
|
|
displaySize?: ?{
|
|
width: number,
|
|
height: number,
|
|
},
|
|
/**
|
|
* (Optional) the resizing mode to use when scaling the image. If the
|
|
* `displaySize` param is not specified, this has no effect.
|
|
*/
|
|
resizeMode?: ?$Enum<{
|
|
contain: string,
|
|
cover: string,
|
|
stretch: string,
|
|
}>,
|
|
};
|
|
|
|
class ImageEditor {
|
|
/**
|
|
* Crop the image specified by the URI param. If URI points to a remote
|
|
* image, it will be downloaded automatically. If the image cannot be
|
|
* loaded/downloaded, the failure callback will be called. On Android, a
|
|
* downloaded image may be cached in external storage, a publicly accessible
|
|
* location, if it has more available space than internal storage.
|
|
*
|
|
* If the cropping process is successful, the resultant cropped image
|
|
* will be stored in the ImageStore, and the URI returned in the success
|
|
* callback will point to the image in the store. Remember to delete the
|
|
* cropped image from the ImageStore when you are done with it.
|
|
*/
|
|
static cropImage(
|
|
uri: string,
|
|
cropData: ImageCropData,
|
|
success: (uri: string) => void,
|
|
failure: (error: Object) => void,
|
|
) {
|
|
RCTImageEditingManager.cropImage(uri, cropData, success, failure);
|
|
}
|
|
}
|
|
|
|
module.exports = ImageEditor;
|