Как загрузить изображение на холст в React: методы и примеры

Чтобы загрузить изображение на холст в React, вы можете использовать несколько методов. Вот несколько вариантов:

  1. FileReader API: вы можете использовать FileReader API для чтения файла изображения и преобразования его в URL-адрес данных. Затем вы можете установить URL-адрес данных в качестве источника элемента изображения на холсте. Вот пример:
import React, { useState } from 'react';
const CanvasUploader = () => {
  const [imageSrc, setImageSrc] = useState('');
  const handleFileUpload = (e) => {
    const file = e.target.files[0];
    const reader = new FileReader();
    reader.onload = (event) => {
      setImageSrc(event.target.result);
    };
    reader.readAsDataURL(file);
  };
  return (
    <div>
      <input type="file" onChange={handleFileUpload} />
      <canvas>
        <img src={imageSrc} alt="Uploaded Image" />
      </canvas>
    </div>
  );
};
export default CanvasUploader;
  1. HTMLCanvasElement API: вы можете использовать HTMLCanvasElement API для рисования изображения непосредственно на холсте. В этом методе вы загружаете изображение с помощью конструктора Image, а затем используете метод drawImageдля его рендеринга на холст. Вот пример:
import React, { useRef, useEffect } from 'react';
const CanvasUploader = () => {
  const canvasRef = useRef(null);
  const imageRef = useRef(null);
  const handleFileUpload = (e) => {
    const file = e.target.files[0];
    const reader = new FileReader();
    reader.onload = (event) => {
      const img = new Image();
      img.onload = () => {
        const canvas = canvasRef.current;
        const ctx = canvas.getContext('2d');
        ctx.drawImage(img, 0, 0);
      };
      img.src = event.target.result;
      imageRef.current = img;
    };
    reader.readAsDataURL(file);
  };
  useEffect(() => {
    const canvas = canvasRef.current;
    const ctx = canvas.getContext('2d');
    ctx.drawImage(imageRef.current, 0, 0);
  }, []);
  return (
    <div>
      <input type="file" onChange={handleFileUpload} />
      <canvas ref={canvasRef} />
    </div>
  );
};
export default CanvasUploader;

Это всего лишь несколько способов загрузить изображение на холст в React. Вы можете выбрать тот, который лучше всего соответствует вашим потребностям. Не забывайте обрабатывать случаи ошибок, проверки и дополнительные функции в соответствии с вашим конкретным вариантом использования.