最终为了实现想要的效果,我还是决定牺牲自己, 手动实现一个支持上传裁切并压缩的组件, 并取名为react-cropper-pro.
2022-07-16 16.02.04.gif
react-cropper-pro...实现文件上传组件样式
image.png
我们都知道元素的input文件上传组件采用的默认样式非常简陋, 所以我们需要通过某种方式替换原生样式, 这里和大家分享一下我实现的方式....我们需要实现的效果是图片上传后会出现上传弹窗, 显示裁切区域, 如下:
2022-07-16 16.02.04.gif
这里弹窗的实现我采用了React-Dom的createPortal API, 它可以实现弹窗...:
《精通react/vue组件设计》之配合React Portals实现一个功能强大的抽屉(Drawer)组件
这块的核心源码可以参考github仓库对应的第134行....实现图片压缩
图片压缩这块主要是基于产品业务场景来设计, 这里我分了4个档:
不压缩
高
中
低
如下:
image.png
这一块主要是利用了canvas和 cropper 的能力, 我们通过控制canvas