Showing
3 changed files
with
54 additions
and
13 deletions
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 | ... | ... |
-
Please register or login to post a comment