我正在寻找最好的解决方案来压缩图像,我收到,并需要存储在我的数据库中。
实际上,我将图像转换为base64格式,然后将其发送到服务器。
handleImage = e => {
e.preventDefault();
let reader = new FileReader();
let file = e.target.files[0];
reader.onloadend = () => {
this.setState({
file: file,
image: reader.result
});
}
this.setState({ imgchange: true })
}
然后将当前图像发送到服务器。但对于低质量的图像,这是好的,但当我试图上传一个中高质量的图像时,我不能将其保存在服务器上,我需要一个方法来压缩图像。
你有什么办法实现这一点吗?你能给我举个例子吗?
4条答案
按热度按时间esbemjvw1#
最好的npm软件包是
browser-image-compression
。在React和Redux中测试过。npm install browser-image-compression --save
异步等待语法:
欲了解更多详情,请访问NPM
pinkon5k2#
我以前在React/Redux应用中使用图像库做过这件事,最终生成一个压缩的JPG文件--如果这对你有用的话,那么使用类似Jimp的东西是一个选择。它是为节点设计的,但我安装它是为了在browser中使用,并这样使用它:
你可以做一些调整,以找出什么样的JPG质量适合你的应用程序,并进行相应的调整。
当我使用这个函数时,我创建了一个
onDrop
函数,它处理图像的方式与您非常相似--我不能保证这段代码是超级干净或超级高效的--它来自一个一次性的原型--但它应该能让您走上正确的道路:c3frrgcw3#
您可以使用react-image-file-resizer库来压缩图像,
例如:
For Details you can read this documentation
uqzxnwby4#