이정민

수정된 img 띄우기

1 +import dynamic from "next/dynamic";
1 import { useState } from "react"; 2 import { useState } from "react";
2 import styled from "styled-components"; 3 import styled from "styled-components";
3 4
5 +const ToastEditor = dynamic(() => import("components/ToastEditor"), {
6 + ssr: false,
7 +});
4 const Image = () => { 8 const Image = () => {
5 const [file, setFile] = useState(undefined); 9 const [file, setFile] = useState(undefined);
6 const [previewURL, setPreviewURL] = useState<string | ArrayBuffer>(""); 10 const [previewURL, setPreviewURL] = useState<string | ArrayBuffer>("");
...@@ -24,9 +28,16 @@ const Image = () => { ...@@ -24,9 +28,16 @@ const Image = () => {
24 reader.readAsDataURL(targetFile); 28 reader.readAsDataURL(targetFile);
25 }; 29 };
26 30
31 + const [isEditorOpened, setIsEditorOpened] = useState(false);
32 + const handleEditor = () => {
33 + setIsEditorOpened(true);
34 + };
35 +
27 return ( 36 return (
37 + <>
28 <Container> 38 <Container>
29 <ImgBox> 39 <ImgBox>
40 + <div onClick={handleEditor}>asdf</div>
30 {file === undefined ? ( 41 {file === undefined ? (
31 <> 42 <>
32 <div className="sub-flex"> 43 <div className="sub-flex">
...@@ -52,12 +63,13 @@ const Image = () => { ...@@ -52,12 +63,13 @@ const Image = () => {
52 </> 63 </>
53 ) : ( 64 ) : (
54 <img 65 <img
66 + id="image"
55 alt={""} 67 alt={""}
56 style={{ 68 style={{
57 objectFit: "cover", 69 objectFit: "cover",
58 display: "flex", 70 display: "flex",
59 margin: "0 auto", 71 margin: "0 auto",
60 - width: "50rem", 72 + width: "30rem",
61 }} 73 }}
62 src={previewURL as string} 74 src={previewURL as string}
63 /> 75 />
...@@ -65,6 +77,8 @@ const Image = () => { ...@@ -65,6 +77,8 @@ const Image = () => {
65 </ImgBox> 77 </ImgBox>
66 {/* <Menu /> */} 78 {/* <Menu /> */}
67 </Container> 79 </Container>
80 + {isEditorOpened && <ToastEditor {...{ setPreviewURL }} />}
81 + </>
68 ); 82 );
69 }; 83 };
70 84
......
...@@ -3,12 +3,13 @@ import ImageEditor from "@toast-ui/react-image-editor"; ...@@ -3,12 +3,13 @@ import ImageEditor from "@toast-ui/react-image-editor";
3 import { useEffect, useState } from "react"; 3 import { useEffect, useState } from "react";
4 import "tui-image-editor/dist/tui-image-editor.css"; 4 import "tui-image-editor/dist/tui-image-editor.css";
5 5
6 -const ToastEditor = () => { 6 +const ToastEditor = ({ setPreviewURL }) => {
7 const [lowerCanvas, setLowerCanvas] = useState<HTMLCanvasElement>(); 7 const [lowerCanvas, setLowerCanvas] = useState<HTMLCanvasElement>();
8 + const [upperCanvas, setUpperCanvas] = useState<HTMLCanvasElement>();
8 // console.log( 9 // console.log(
9 // document.getElementsByClassName("lower-canvas")[0]?.toDataURL("image/png") 10 // document.getElementsByClassName("lower-canvas")[0]?.toDataURL("image/png")
10 // ); 11 // );
11 - console.log("c"); 12 + console.log("s");
12 13
13 // const [upperCanvas, setUpperCanvas] = useState( 14 // const [upperCanvas, setUpperCanvas] = useState(
14 // document.getElementsByClassName("upper-canvas ")[0] 15 // document.getElementsByClassName("upper-canvas ")[0]
...@@ -19,21 +20,46 @@ const ToastEditor = () => { ...@@ -19,21 +20,46 @@ const ToastEditor = () => {
19 setLowerCanvas( 20 setLowerCanvas(
20 document.getElementsByClassName("lower-canvas")[0] as HTMLCanvasElement 21 document.getElementsByClassName("lower-canvas")[0] as HTMLCanvasElement
21 ); 22 );
23 + setUpperCanvas(
24 + document.getElementsByClassName("upper-canvas")[0] as HTMLCanvasElement
25 + );
22 }); 26 });
23 }, []); 27 }, []);
24 28
25 - useEffect(() => { 29 + // useEffect(() => {
26 - const img = lowerCanvas?.toDataURL("image/png"); 30 + // const img = lowerCanvas?.toDataURL("image/png");
27 - let w = window.open(); 31 + // const uploaded = document.getElementById("image");
28 - if (w?.window) w.document.body.innerHTML = "<img src='" + img + "'>"; 32 + // console.log(uploaded);
33 + // // let w = window.open();
34 + // // if (w?.window) w.document.body.innerHTML = "<img src='" + img + "'>";
35 + // const image = new Image();
36 + // // image.onload = function () {
37 + // // lowerCanvas.width = uploaded.clientWidth;
38 + // // lowerCanvas.height = uploaded.clientHeight;
39 + // // lowerCanvas?.getContext("2d").drawImage(image, 0, 0);
40 + // // };
41 + // image.src = previewURL;
42 + // console.log("b");
43 + // if (lowerCanvas?.getContext&&upperCanvas?.getContext) {
44 + // image.onload = function () {
45 +
46 + // lowerCanvas.width = 1000;
47 + // lowerCanvas.height = 572;
48 + // upperCanvas.width = 1000;
49 + // upperCanvas.height = 572;
50 + // lowerCanvas?.getContext("2d").drawImage(image, 0, 0);
51 + // };
52 + // console.log(lowerCanvas.getContext("2d"));
53 + // }
54 + // }, [lowerCanvas?.toDataURL("image/png")]);
29 55
30 - console.log("b"); 56 + const handleEnd = () => {
31 - if (lowerCanvas?.getContext) { 57 + setPreviewURL(lowerCanvas.toDataURL("image/png"));
32 - console.log(lowerCanvas.getContext("2d")); 58 + };
33 - }
34 - }, [lowerCanvas?.toDataURL("image/png")]);
35 59
36 return ( 60 return (
61 + <>
62 + <div onClick={handleEnd}>asdf</div>
37 <ImageEditor 63 <ImageEditor
38 includeUI={{ 64 includeUI={{
39 loadImage: { 65 loadImage: {
...@@ -57,6 +83,7 @@ const ToastEditor = () => { ...@@ -57,6 +83,7 @@ const ToastEditor = () => {
57 }} 83 }}
58 usageStatistics={true} 84 usageStatistics={true}
59 /> 85 />
86 + </>
60 ); 87 );
61 }; 88 };
62 89
......
...@@ -11,7 +11,7 @@ const Index = () => ( ...@@ -11,7 +11,7 @@ const Index = () => (
11 <Container> 11 <Container>
12 <Header /> 12 <Header />
13 <Image /> 13 <Image />
14 - <ToastEditor /> 14 + {/* <ToastEditor /> */}
15 </Container> 15 </Container>
16 ); 16 );
17 17
......