Слияние кода завершено, страница обновится автоматически
order | title | ||||
---|---|---|---|---|---|
2 |
|
图片裁剪下载
picture Crop and Download
import { ImageCrop, Button } from 'choerodon-ui';
import { useState, useCallback } from 'react';
const Demo = () => {
const [visable, setVisiable] = useState(false)
const hanleClick = useCallback(() => {
setVisiable(true)
}, [])
const hanleOk = useCallback(({ url, blob, area }) => {
console.log(url, blob, area);
setVisiable(false);
// 这里是获取到的图片base64编码,这里只是个例子哈,要自行编码图片替换这里才能测试看到效果
const imgUrl = url;
// 如果浏览器支持msSaveOrOpenBlob方法(也就是使用IE浏览器的时候),那么调用该方法去下载图片
if (window.navigator.msSaveOrOpenBlob) {
const bstr = atob(imgUrl.split(",")[1]);
let n = bstr.length;
const u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
// eslint-disable-next-line no-shadow
const blob = new Blob([u8arr]);
window.navigator.msSaveOrOpenBlob(blob, "chart-download.png");
} else {
// 这里就按照chrome等新版浏览器来处理
const a = document.createElement("a");
a.href = imgUrl;
a.setAttribute("download", "chart-download");
a.click();
}
}, [])
const hanleCancel = useCallback(() => {
setVisiable(false);
console.log('close')
}, [])
return (
<>
<Button onClick={hanleClick} funcType="raised">裁剪并下载</Button>
<ImageCrop
modalVisible={visable}
onOk={hanleOk}
onCancel={hanleCancel}
src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png'
rotate
zoom
grid
aspect={12 / 13}
/>
</>
)
}
ReactDOM.render(
<Demo />,
mountNode,
);
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )