brunch

You can make anything
by writing

C.S.Lewis

by 홍기린 Dec 19. 2023

개발 코드를 chatGPT에게 물어보다

썸네일 프로그램 3분만에 코딩하기 with React

이미지 편집 프로그램을 리액트로 개발하고 싶어. 이미지를 업로드하는 코드와 폰트를 넣는 코드, 그걸 다시 저장할 수 있는 코드를 짜줘.


그랬더니 놀랍게도 1분만에 엄청난 코드들과 함께 답변을 해왔다. '0' 엄메이징..

아래의 답변은 모두 chatGPT가 대답한 결과들이다. 근데 진짜 너무 편하다. 이거 AI 가 나오고 나서 단순 개발만 하는 사람은 일이 없어질 수도 있겠다는 생각도 들고 개발에 들어가는 리소스가 현저히 낮아지겠다는 생각이 든다 흠. 물론 이걸 그대로 개발할 건 아니고, 하나씩 적용해보면서 개발할 예정! 


이하 무편집 chatGPT답변!



이미지 편집 프로그램을 React로 개발하기 위해서는 다음과 같은 단계를 따를 수 있습니다.


1. React 프로젝트 생성하기

React 애플리케이션을 만들기 위해서는 Node.js와 npm이 먼저 설치되어 있어야 합니다. 설치가 완료된 후, 아래의 명령어를 사용하여 React 프로젝트를 생성할 수 있습니다.


npx create-react-app image-editor



2. 이미지 업로드 코드 작성하기

이미지 업로드를 위해, HTML의 input 요소를 사용합니다. 이 요소를 React 컴포넌트로 래핑하여 사용할 수 있습니다. 예를 들어, 다음과 같이 ImageUploader 컴포넌트를 만들어서 사용할 수 있습니다.

이 컴포넌트에서는 useState를 사용하여 이미지를 상태로 관리합니다. handleImageChange 함수는 파일 선택 이벤트를 처리하여 이미지 파일을 상태에 저장합니다. handleSubmit 함수는 폼 제출 이벤트를 처리하여 이미지를 업로드하거나 상태를 업데이트하는 등의 작업을 수행합니다.



3. 폰트 추가 코드 작성하기

폰트를 추가하는 방법은 여러 가지가 있지만, 가장 간단한 방법은 CSS를 사용하는 것입니다. 예를 들어, 다음과 같이 FontSelector 컴포넌트를 만들어서 사용할 수 있습니다.

이 컴포넌트에서는 handleFontChange 함수를 사용하여 선택한 폰트를 document.body.style.fontFamily 속성에 설정합니다.



4. 이미지 저장 코드 작성하기

canvas 요소를 사용하여 이미지를 그린 후, toDataURL() 메서드를 호출하여 데이터 URL을 얻을 수 있습니다. 이 데이터 URL은 이미지를 문자열로 나타낸 것으로, 이를 서버에 전송하거나 브라우저에 다운로드하거나 다른 용도로 사용할 수 있습니다. 예를 들어, 다음과 같이 ImageSaver 컴포넌트를 만들어서 사용할 수 있습니다.

이 컴포넌트에서는 useRef를 사용하여 canvas 요소를 참조합니다. handleSave 함수에서는 먼저 img 객체를 생성하여 선택한 이미지를 로드합니다. 그 후, canvas 요소에 이미지를 그린 후, toDataURL() 메서드를 호출하여 데이터 URL을 얻습니다. 이 데이터 URL은 image/png 형식으로 설정됩니다.



5. 모든 컴포넌트 합치기

위에서 만든 ImageUploader, FontSelector, ImageSaver 컴포넌트를 합쳐서 사용할 수 있습니다. 예를 들어, 다음과 같이 App 컴포넌트를 만들어서 사용할 수 있습니다.

이 컴포넌트에서는 useState를 사용하여 이미지를 상태로 관리합니다. handleImageChange 함수는 ImageUploader 컴포넌트에서 이미지가 선택될 때 호출됩니다. 선택한 이미지는 상태로 설정됩니다. 상태가 변경되면, FontSelector와 ImageSaver 컴포넌트가 렌더링됩니다.



6. CSS 스타일링 추가하기

마지막으로, 컴포넌트에 CSS 스타일링을 추가하여 디자인을 개선할 수 있습니다. 예를 들어, 다음과 같이 ImageUploader 컴포넌트에 스타일을 적용할 수 있습니다.

이 스타일은 ImageUploader  컴포넌트를 가운데 정렬하고, 레이블과 입력 요소를 스타일링합니다. 이와 같은 방식으로, 다른 컴포넌트들에도 스타일을 적용하여 디자인을 개선할 수 있습니다.  



7. 마무리

이제 이미지 업로드, 폰트 선택, 이미지 저장 등의 기능이 포함된 이미지 편집기 애플리케이션을 리액트로 만들었습니다. 이를 기반으로 더 많은 기능을 추가하거나, 다른 디자인을 적용할 수 있습니다. 또한, 다른 프레임워크나 라이브러리를 사용하여 비슷한 애플리케이션을 만들 수도 있습니다.




다시 한번 말하지만, 위의 글들은 내가 쓴것이 아니고 chatGPT가 모두 대답해준 것이다. ㅎㅎ 마무리까지 답변해주다니.... 이 소스들을 토대로 이제 실제로 적용해서 구현하는 것까지 해봐야겠다. ☺️

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari