gpt4 book ai didi

android - react 原生 : Crop image on Android

转载 作者:行者123 更新时间:2023-12-03 21:31:09 30 4
gpt4 key购买 nike

以下功能适用于 iOS,但不适用于 Android。我想在两个平台上实现相同的结果。

基于 this official documentation ,原因不见了ImageStorereact-native安卓包。

import {
ImageEditor,
ImageStore
} from 'react-native';

react-native 中裁剪图像(如正方形)的另一种方法是什么?安卓系统?
cropImage(base64ImageData) {
return new Promise((resolve, reject)=>{
ImageStore.addImageFromBase64(
base64ImageData,
(photoURI)=>{
ImageEditor.cropImage(
photoURI,
{offset:{x:0,y:(1920-1080)/2},size:{width:1080, height:1080}},
(croppedURI)=>{
ImageStore.getBase64ForTag(
croppedURI,
(base64CroppedData)=>{
ImageStore.removeImageForTag(croppedURI);
resolve(base64CroppedData);
},
(err)=>{
reject(err);
}
);
ImageStore.removeImageForTag(photoURI);
},
(err)=>{
reject(err);
}
);
},
(err)=>{
reject(err);
}
);
});
}

更新:

有项目 https://github.com/seancunningham/react-native-image-store-ext (最后一次提交于 2016 年 10 月 28 日),但它只有 implements :
  • Boolean removeImageForTag(String file_uri)

  • 其余部分缺失:
  • 静态 addImageFromBase64(base64ImageData, 成功, 失败)

  • 我的初步解决方案:
      private static final String IMAGE_STORAGE_URL_SCHEME = "rct-image-store";

    @ReactMethod
    public void addImageFromBase64(String base64_image_data, Callback successCallback, Callback failureCallback){
    String imageStorageDir = this.reactContext.getApplicationContext().getFilesDir()+"/"+IMAGE_STORAGE_URL_SCHEME+"/";
    byte[] buffer = new byte[BUFFER_SIZE];
    String file_uri = imageStorageDir+"1";
    try {
    File f = new File(imageStorageDir);
    if(!f.exists()) {
    f.mkdir();
    }
    FileOutputStream fos = new FileOutputStream(file_uri, false);
    byte[] decodedImage = Base64.decode(base64_image_data, Base64.DEFAULT);
    fos.write(decodedImage);
    fos.close();
    successCallback.invoke("file://"+file_uri);
    } catch (IOException ioe) {
    failureCallback.invoke("Failed to add image from base64String"+ioe.getMessage());
    } catch (Exception e) {
    failureCallback.invoke("Failed to add image from base64String"+e.getMessage());
    }
    }
  • 静态 getBase64ForTag(uri, 成功, 失败)

  • this file 中实现 ImageStorageManager.java
  • 静态 hasImageForTag(uri, 回调)
  • 最佳答案

    问题必须是偏移量+大小的总和大于接受的高度,试试看:
    {offset:{x:0,y:(1920-1080)/2},size:{width:1080, height:1080 - (1920-1080)/2)}},
    看看它是否有效,如果有效,只需尝试调整 size.height 的大小,看看什么对你有用! :)

    关于android - react 原生 : Crop image on Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42070207/

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