RN项目笔记(二)ImageEditor裁剪base64图片填坑

本文探讨了一种需求,即在App中处理Base64编码的大图片,通过前端裁剪技术将其重组。作者在实现过程中遇到iOS与Android平台裁剪差异,最终通过RN调用原生代码解决。关键步骤包括判断设备类型并选择相应编辑器,以及处理不同平台回调和规则排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.需求分析

现在很多APP都有这样一个需求:
在这里插入图片描述

在一个大图片里拖动小滑块,使小滑块能填充吻合到大图上去。为了减少一个图片的HTTP请求,往往会把图片编码成base64的格式,(将一张图片数据编码成一串字符串,使用该字符串代替图片地址)。于是请求服务器时返回来的是一张打乱了的base64格式的图片,需要前端自己重组图片。我想到的重组思路是裁剪 (当然还有其他方法):
1.1 先将大图片(200100)剪裁成20等分的小图片(2050);
1.2 根据后台提供的规则进行重组。

二.遇到问题

在做项目过程中,遇到了一个问题——不管我是使用官网提供的ImageEditor,还是开源社区的@react-native-community/image-editor提供的图片编辑器在ios手机上都能成功裁剪,但在android手机上裁剪都是不成功的。大致看了一下@react-native-community/image-editor源码,发现它是在官网的ImageEditor基础上做了一些优化的,比如它使用了await关键字做了一个异步等待回调结果,提高了程序的流畅性。经过多次测试我又发现,两者都能在ios,android上成功裁剪http、https格式的图片。但是不能满足需求,服务器返回的是base64格式的图片,虽然ios能裁剪成功,但android上裁剪不成功。这应该是官方的ImageEditor存在的一个bug,至今没解决!测试结果如下图:
在这里插入图片描述

在这里插入图片描述

三.解决问题(填坑)

解决方案:用RN去调用android代码。

3.1 判断一下,如果是运行在ios上就使用@react-native-community/image-editor,如果是运行在android上就去调android原生代码.
在这里插入图片描述

在这里插入图片描述

3.2 是android手机,去调android原生代码

在这里插入图片描述

3.3 android 原生代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4 RN 接收android回调结果(20张小图),根据服务器提供的规则排序小图片
在这里插入图片描述
注:到此android部分已搞定

3.5 是ios手机,直接使用@react-native-community/image-editor提供的ImageEditor
在这里插入图片描述
注:到此ios部分已搞定

再加上一些手势的监听事件,拖动滑块验证的代码,请看下一篇文章…此处已省略。

今天的分享结束了,再见~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值