ant-design/components/upload/demo/crop-image.md
南小北 bfd5644ff0
Add crop image demo for Upload (#24174)
* chore: add antd-img-crop

* docs: add crop image demo for upload

* fix: move antd-img-crop to devDependencies

* fix: fix eslint warning

* test: update snapshot
2020-05-18 19:22:45 +08:00

1.5 KiB

order title
14
zh-CN en-US
上传前裁切图片 Crop image before uploading

zh-CN

配合 antd-img-crop 实现上传前裁切图片。

en-US

Use antd-img-crop to crop image before uploading.

import React, { useState } from 'react';
import { Upload } from 'antd';
import ImgCrop from 'antd-img-crop';

const Demo = () => {
  const [fileList, setFileList] = useState([
    {
      uid: '-1',
      name: 'image.png',
      status: 'done',
      url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',
    },
  ]);

  const onChange = ({ fileList: newFileList }) => {
    setFileList(newFileList);
  };

  const onPreview = async file => {
    let src = file.url;
    if (!src) {
      src = await new Promise(resolve => {
        const reader = new FileReader();
        reader.readAsDataURL(file.originFileObj);
        reader.onload = () => resolve(reader.result);
      });
    }
    const image = new Image();
    image.src = src;
    const imgWindow = window.open(src);
    imgWindow.document.write(image.outerHTML);
  };

  return (
    <ImgCrop rotate>
      <Upload
        action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
        listType="picture-card"
        fileList={fileList}
        onChange={onChange}
        onPreview={onPreview}
      >
        {fileList.length < 5 && '+ Upload'}
      </Upload>
    </ImgCrop>
  );
};

ReactDOM.render(<Demo />, mountNode);