gpt4 book ai didi

reactjs - 通过 react-image-crop 模块获取裁剪图像

转载 作者:行者123 更新时间:2023-12-03 23:54:03 25 4
gpt4 key购买 nike

你能帮我如何通过 react-image-crop 模块获得输出(裁剪图像的来源)吗?
上传组件如下所示:

class MyUpload extends Component {
constructor() {
super();
this.state = {
src: 'source-to-image',
crop: {
x: 10,
y: 10,
aspect: 9 / 16,
width: 100
}
}
}

onCropComplete = (crop, pixelCrop) => {
this.setState({
crop
})
};

render() {
return (
<ReactCrop
src={this.state.src}
onComplete={this.onCropComplete}
/>
);
} }

onCropComplete 方法只返回裁剪图像的坐标、宽度和高度,而不是源。我想获取 blob 文件。

编辑(工作解决方案——感谢 Mosè Raguzzini 的回复):

如果有人遇到类似问题,请从组件中的教程中调用 getCropptedImg 函数,并从返回的 Blob 对象创建 url,如下所示:
getCroppedImg(this.state.image, pixelCrop, 'preview.jpg')
.then((res) => {
const blobUrl = URL.createObjectURL(res);
console.log(blobUrl); // it returns cropped image in this shape of url: "blob:http://something..."
})

最佳答案

react-image-crop 不是用来产生 blob,只是用来裁剪图像内联。可能你需要像 https://foliotek.github.io/Croppie/ 这样的东西

更新:
检查“如何在客户端显示裁剪?”部分在底部
https://www.npmjs.com/package/react-image-crop , 该 blob 可作为隐藏功能使用

/**
* @param {File} image - Image File Object
* @param {Object} pixelCrop - pixelCrop Object provided by react-image-crop
* @param {String} fileName - Name of the returned file in Promise
*/
function getCroppedImg(image, pixelCrop, fileName) {

const canvas = document.createElement('canvas');
canvas.width = pixelCrop.width;
canvas.height = pixelCrop.height;
const ctx = canvas.getContext('2d');

ctx.drawImage(
image,
pixelCrop.x,
pixelCrop.y,
pixelCrop.width,
pixelCrop.height,
0,
0,
pixelCrop.width,
pixelCrop.height
);

// As Base64 string
// const base64Image = canvas.toDataURL('image/jpeg');

// As a blob
return new Promise((resolve, reject) => {
canvas.toBlob(file => {
file.name = fileName;
resolve(file);
}, 'image/jpeg');
});
}

async test() {
const croppedImg = await getCroppedImg(image, pixelCrop, returnedFileName);
}

关于reactjs - 通过 react-image-crop 模块获取裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52273880/

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