λΆ‰μ€κ±°μœ„ / GoOSe

Photo Layout Editor

아티클 정보

λ‘₯μ§€
Tool & Service
λΆ„λ₯˜
Extra
등둝일
2019-06-23 16:38:50

photo-layout-editor-000.png

photo-layout-editor-001.jpg

사진 λ ˆμ΄μ•„μ›ƒμ„ νŽΈμ§‘ν•˜λŠ” 도ꡬλ₯Ό λΈŒλΌμš°μ €μ—μ„œ κ΅¬λ™λ˜λŠ” ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κ²Œ λ˜μ—ˆλ‹€.

이것을 λ§Œλ“€κ²Œ 된 κ³„κΈ°λŠ” Instagram blogμ—μ„œ 사진이 λ‹€μ–‘ν•œ νŒ¨ν„΄μœΌλ‘œ μ•„λ¦„λ‹΅κ²Œ λ°°μΉ˜λ˜μ–΄ μžˆλŠ” λͺ¨μŠ΅μ—μ„œ 감λͺ…을 λ°›μ•˜λŠ”λ° 사진 λ ˆμ΄μ•„μ›ƒμ„ νŽΈμ§‘ν•˜κ³  κΈ€ 본문에 μ‚½μž…ν•  수 μžˆλ‹€λ©΄ μ’‹κ² λ‹€λŠ” 생각에 미쳐 μ΄λ ‡κ²Œ λ§Œλ“€κ²Œ λ˜μ—ˆλ‹€.

이것이 λ§Œλ“€μ–΄μ§ˆκ±°λΌκ³ λŠ” 생각도 λͺ»ν–ˆλ‹€. 무엇보닀 λΈ”λŸ­μ„ μ΄λ™ν•˜λŠ”κ±΄ λ‘˜μ§ΈμΉ˜κ³  λΈ”λŸ­μ„ μ΄λ™ν•œ μžλ¦¬μ— κΈ°μ‘΄ λΈ”λŸ­μ€ λ‹€λ₯Έ μœ„μΉ˜μ— λ°€λ¦¬λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ κ΅¬ν˜„ν•΄μ•Όν•˜λŠ”λ° μ•Œκ³ λ¦¬μ¦˜ 자체λ₯Ό κ΅¬ν˜„ν•˜λŠ”κ±΄ μ§€κΈˆ λ‚˜λ‘œμ¨λŠ” λΆˆκ°€λŠ₯ν•˜κ³ , 이런 κΈ°λŠ₯이 κ΅¬ν˜„λœ μ λ‹Ήν•œ 슀크립트 ν”ŒλŸ¬κ·ΈμΈμ„ μ°Ύμ•„λ³΄λŠλΌ μž‘μ—…μ„ μ‹œμž‘ν•˜μ§€λ„ μ•Šμ•˜λ‹€.

Plan

μž‘μ—…μ„ μ‹œμž‘ν•˜μžκ³  κ²°μ‹¬ν•˜κ³  μ‹œκ°„μ΄ μ’€ 흘러 λΈ”λŸ­ 배치λ₯Ό νŽΈμ§‘ν•  수 μžˆλŠ” jQuery ν”ŒλŸ¬κ·ΈμΈμ„ λ°œκ²¬ν•˜κ²Œ λ˜μ—ˆλ‹€. gridster.jsμ΄λΌλŠ” 것인데 μ΄μ •λ„λ§Œν•œ 슀크립트 ν”ŒλŸ¬κ·ΈμΈμ€ 더이상 μ—†μ–΄μ„œ 이걸 λ°œκ²¬ν•˜κ³ λ‚˜μ„œ λ°”λ‘œ μž‘μ—…μ— λŒμž…ν•˜κ²Œ λ˜μ—ˆλ‹€.

기본적으둜 μ–΄λ–€ κΈ°λŠ₯을 λ„£μ„κ±΄μ§€λŠ” λŒ€μΆ© 머릿속에 λ“€μ–΄μžˆμ—ˆλ‹€.

λΈ”λŸ­ 속성을 νŽΈμ§‘ν•  수 μžˆλŠ” 속성폼과, λ ˆμ΄μ•„μ›ƒμ„ νŽΈμ§‘ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆ, 이미지λ₯Ό μ—…λ‘œλ“œν•˜κ³  μ—…λ‘œλ“œν•œ 이미지λ₯Ό λͺ¨μ•„λ‘λŠ” μ˜μ—­, μ„ νƒν•œ 이미지λ₯Ό ν¬λ‘œν•‘ν•˜μ—¬ μ‚¬μ΄μ¦ˆλ₯Ό λ°”κΎΈκ±°λ‚˜ 이미지 μœ„μΉ˜λ₯Ό λ³€ν˜•ν•  수 μžˆλŠ” κΈ°λŠ₯듀을 화면에 μ§‘μ–΄λ„£μœΌλ €κ³  ν–ˆλ‹€.
κ·Έλž˜μ„œ λ‹€μŒ κ·Έλ¦Όκ³Ό 같이 λ¨Όμ € μ™€μ΄μ–΄ν”„λ ˆμž„μ„ κ·Έλ €λ΄€λ‹€.

photo-layout-editor-002.jpg

와이어 ν”„λ ˆμž„μ„ μ΄λ ‡κ²Œ κ·Έλ Έλ‹€κ³  λ””μžμΈμ΄ λ˜‘κ°™μ΄ λ§Œλ“€μ–΄μ§€μ§€λŠ” μ•Šμ•˜λ‹€. μ‹€μ œλ‘œ μ‚¬μš©ν•΄λ³΄λ©΄ λΆˆνŽΈν•œ UI둜 κ΅¬μ„±λ˜κ³€ ν•˜λ©΄ μ‘°κΈˆμ”© λ””μžμΈμ„ κ³ μΉ  μƒκ°μ΄μ—ˆλ‹€.

이 과정을 μ§„ν–‰ν•˜λ©΄μ„œ 슀크립트λ₯Ό μ–΄λ–»κ²Œ μž‘μ„±ν• κ²ƒμΈμ§€μ— λŒ€ν•΄μ„œ κ³ λ―Όν•˜κΈ° μ‹œμž‘ν–ˆλ‹€.
이 μž‘μ—…μ—μ„œ λŒ€λΆ€λΆ„μ˜ 비쀑을 μ°¨μ§€ν•˜λŠ” 뢀뢄은 javascript인데 λ‹¨μˆœνžˆ jQuery만으둜 μž‘μ„±ν•˜λ©΄ ꡬ쑰적으둜 λ§Œλ“€κΈ°λŠ” μ •λ§λ‘œ νž˜λ“€κ³  DOM μ—…λ°μ΄νŠΈμ— λ“€μ–΄κ°€λŠ” λΉ„μš©μ΄ 많이 λ“€μ–΄κ°€λŠ”κ±Έ 잘 μ•Œκ³ μžˆμ–΄μ„œ 쒀더 νŽΈν•œ 방식을 μƒκ°ν•˜κ³  μžˆμ—ˆλ‹€.
마침 reactλΌλŠ” 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄λŸ°μ €λŸ°κ²ƒλ“€μ„ λ§Œλ“€κΈ° μ‹œμž‘ν•˜λŠ” λ•ŒλΌμ„œ μ—°μŠ΅ν•΄λ³ΌκΉŒ ν•˜λŠ” μƒκ°μœΌλ‘œ reactλ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ—…μ„ ν•˜κΈ°λ‘œ κ²°μ‹¬ν–ˆλ‹€.

photo-layout-editor-004.jpg

μš°μ„  λ””μžμΈκ³Ό 기술적인 뢀뢄을 κ³ λ―Όν•˜κ³  μ •λ¦¬ν•˜μ—¬ Trello μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜μ—¬ λ™μž‘ κ³Όμ •μ΄λ‚˜ λ§Œλ“€ μ»΄ν¬λ„ŒνŠΈ, κΈ°λŠ₯λͺ…μ„Έμ„œ, 해야할일듀을 κΈ°λ‘ν•΄λ‘μ—ˆλ‹€.
λ””μžμΈ μž‘μ—… μΊ‘μ³ν™”λ©΄μ΄λ‚˜ μ™€μ΄μ–΄ν”„λ ˆμž„ 캑쳐화면, μ°Έκ³ ν•œ μ‚¬μ΄νŠΈλ‚˜ κ΄€λ ¨ μ†ŒμŠ€κ°€ μžˆλŠ” μ‚¬μ΄νŠΈ url듀을 μΆ”κ°€λ‘œ κΈ°λ‘ν•΄λ‘μ—ˆλ‹€.

무엇보닀 λ‚΄κ°€ ν•΄μ•Όν• μΌμ΄λ‚˜ μž‘μ—…ν•΄μ•Όν•  뢀뢄듀을 기둝해두면 μžŠμ§€μ•Šκ³  ν•  수 μžˆμ–΄μ„œ TrelloλŠ” λŒ€λ‹¨νžˆ κ³ λ§ˆμ›Œν•˜λŠ” μ„œλΉ„μŠ€λ‹€.

Design

어떀것듀을 ꡬ성 할지에 λŒ€ν•΄μ„œ κ²°μ •ν•˜κ³ λ‚˜μ„œ λ””μžμΈ μž‘μ—…μ„ μ‹œμž‘ν•˜κ²Œ λ˜μ—ˆλ‹€.
μ²˜μŒμ—λŠ” Photoshop으둜 μž‘μ—…μ„ μ‹œμž‘ν–ˆλ‹€. κ·Έμ € λ²„λ¦‡μ²˜λŸΌ λ””μžμΈμž‘μ—…μ„ μ‹œμž‘ν•˜κΈ°λ§Œ ν•˜λ©΄ 포토샡뢀터 μΌœλ²„λ¦°λ‹€. ν¬ν† μƒ΅μœΌλ‘œ μ–΄λŠμ •λ„ μž‘μ—…μ„ ν•˜λ‹€κ°€ Sketch 3λΌλŠ” λ””μžμΈ ν”„λ‘œκ·Έλž¨μ„ μ•Œκ²Œ λ˜μ–΄μ„œ ν”„λ‘œκ·Έλž¨μ„ λ°”κΏ”μ„œ μƒˆλ‘œ μž‘μ—…ν•˜κΈ° μ‹œμž‘ν–ˆλ‹€.

photo-layout-editor-003.jpg

와이어 ν”„λ ˆμž„μ„ κ·Έλ¦΄λ•ŒλŠ” μ‰½κ²Œ λΈ”λŸ­μ„ νŽΈμ§‘ν•˜λŠ” 법에 λŒ€ν•΄μ„œ ꡬ체적인 κ³„νšμ΄ μ—†μ—ˆλŠ”λ° μ‹€μ œλ‘œ λ””μžμΈμ„ ν•΄λ³΄λ‹ˆ νˆ΄λ°”λ₯Ό λ§Œλ“€μžλŠ” 생각에 미치게 λ˜μ—ˆλ‹€.
κ·Έλž˜μ„œ λΈ”λŸ­μ„ νŽΈμ§‘ν•˜λŠ” μ˜μ—­μœ„μ— κΈ°λŠ₯을 μ‹€ν–‰ν•˜λŠ” νˆ΄λ°” λ²„νŠΌλ“€μ„ λ°°μΉ˜ν–ˆλ‹€.

였λ₯Έμͺ½μ— 이미지λ₯Ό μ—…λ‘œλ“œν•˜κ³  썸넀일 이미지듀이 λ‚˜μ˜€λŠ” νŒ¨λ„μ„ λ„£μ—ˆλ‹€.
이 νŒ¨λ„μ€ λ‹«μ•˜λ‹€κ°€ μ—΄λ¦¬λŠ” μ΄λ²€νŠΈκ°€ 있고, 이미지 μœ„μ— 그것을 μ»¨νŠΈλ‘€ν•˜λŠ” λ²„νŠΌλ“€μ„ λ°°μΉ˜ν–ˆλ‹€.
λ³Έ 화면은 μ΄λ ‡κ²Œ μ„Έκ°€μ§€ ν˜•νƒœμ˜ μ˜μ—­μ„ 두고, νŒμ—…μœΌλ‘œ μ„ νƒν•œ 이미지λ₯Ό ν¬λ‘œν•‘ν•˜λŠ” κΈ°λŠ₯을 λ§Œλ“€κΈ° μœ„ν•˜μ—¬ λ””μžμΈμ„ ν–ˆλ‹€.

λ‹€μ‹œ λ§Œλ“€κΈ΄ ν–ˆμ§€λ§Œ Sketch 3 λΌλŠ” ν”„λ‘œκ·Έλž¨μ— 많이 도움받은 기뢄이 λ“ λ‹€.

Development Environment

λ””μžμΈ μž‘μ—…μ„ λλ‚΄κ³ λ‚˜μ„œ κ°œλ°œμ„ μœ„ν•œ μ„ΈνŒ…μ— λ§Žμ€ λ…Έλ ₯κ³Ό μ‹œκ°„μ„ λ“€μ˜€λ‹€.
scss와 react같은것듀을 κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  수 μ—†κΈ° λ•Œλ¬Έμ— λΉŒλ“œμž‘μ—…μ„ ν†΅ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλŠ” μ†ŒμŠ€λ‘œ λ³€ν™˜μ„ ν•΄μ€˜μ•Όν•œλ‹€. νŽΈν•˜κ²Œ λΉŒλ“œν•  수 μžˆλŠ” ν™˜κ²½μ„ λ§Œλ“€μ–΄ 두면 λΉ λ₯΄κ³ , κ°œλ°œμ— 집쀑할 수 μžˆμ–΄μ§„λ‹€.

photo-layout-editor-005.png

scss to css둜 λΉŒλ“œλŠ” gulp-sass λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜μ—¬ μ‰½κ²Œ λΉŒλ“œ 슀크립트λ₯Ό μž‘μ„±ν–ˆλ‹€.

ν•˜μ§€λ§Œ javascriptμͺ½μ€ λŒ€λ‹¨νžˆ λ³΅μž‘ν–ˆλ‹€. node.jsκ°€ λ“±μž₯ν•˜κ³ λ‚˜μ„œ javascript에 λŒ€ν•œ λ§Žμ€ κ°œλ…λ“€μ΄ μƒκ²¨λ‚¬λŠ”λ° 이것듀이 μ›ΉλΈŒλΌμš°μ €μ—μ„œ λ™μž‘ν•˜μ§€ μ•ŠλŠ”κ²ƒλ“€μ΄μ–΄μ„œ gulp, browserify λͺ¨λ“ˆμ„ μ΄μš©ν•˜μ—¬ λΉŒλ“œλ₯Ό ν•˜λ €ν•˜λŠ”λ° μ„ΈνŒ…ν•˜λŠ” λ‚œμ΄λ„κ°€ 쉽지 μ•Šμ•˜λ‹€.
μ—¬μ°¨μ—¬μ°¨ javascript λΉŒλ“œν™˜κ²½μ„ λ§Œλ“€κ³ λ‚˜μ„œ κ°œλ°œμ— λ“€μ–΄κ°”λ‹€. μ–΄λŠμ •λ„ κ°œλ°œν•˜κ³  λ‚œ 후에 browserify λͺ¨λ“ˆμ„ μ΄μš©ν•œ λΉŒλ“œν™˜κ²½μ„ λ§Œλ“œλŠ”κ²Œ λ„ˆλ¬΄ νž˜λ“€κΈ°λ„ν•˜κ³  μž‘λ™μ΄ 썩 μ’‹μ§€λŠ” μ•Šμ•˜λ‹€λŠ”κ²ƒμ„ κΉ¨λ‹¬μ•˜λ‹€.

photo-layout-editor-006.jpg

κ·Έλ¦¬ν•˜μ—¬ λ‹Ήμ‹œμ— 인기가 λ§Žμ€ webpackμ΄λΌλŠ” λͺ¨λ“ˆ λ²ˆλ“€λŸ¬ λΌλŠ”κ±Έ μ΄μš©ν•˜μ—¬ λΉŒλ“œν™˜κ²½μ„ λ°”κΏ¨λ‹€.
μ•ˆκ·Έλž˜λ„ κ°œλ°œν•˜κ³  있던 μ†ŒμŠ€μ½”λ“œλ₯Ό ν™• μ—Žμ–΄λ²„λ¦¬λŠ” μ‹œκΈ°λ„ μžˆμ—ˆκ³ ν•΄μ„œ λ‚˜λ¦„λŒ€λ‘œ μ‹œν–‰μ°©λ‘œλ₯Ό κ²ͺκ³ μžˆλŠ”λ•Œμ— javascript λΉŒλ“œν™˜κ²½μ„ webpack 베이슀둜 ν™•μ •μ§€μ—ˆλ‹€.
webpack λͺ¨λ“ˆλ²ˆλ“€λŸ¬λŠ” ν™•μ‹€νžˆ λ‹€λ₯Έ λͺ¨λ“ˆμ— λΉ„ν•΄μ„œ μ„€μ •ν•˜κΈ°κ°€ μ‹¬ν”Œν•˜κ³  νŽΈλ¦¬ν–ˆλ‹€.

μ΅œμ’…μ μœΌλ‘œ gulpλ₯Ό λΉŒλ“œμ‹€ν–‰μ„ λ‹΄λ‹Ήν•˜κ³  cssλŠ” gulp-sass, javascriptλŠ” webpack-stream λͺ¨λ“ˆμ„ μ‚¬μš©ν–ˆκ³ , react와 ea2015 μ½”λ“œλ₯Ό λΉŒλ“œν•˜λŠ” λͺ¨λ“ˆ 프리셋은 babelμ—μ„œμ˜ babel-preset-es2015, babel-preset-reactλ₯Ό μ‚¬μš©ν–ˆλ‹€.

Development

ν•΄λ§€λ©΄μ„œ κ°œλ°œν™˜κ²½μ„ κ΅¬μΆ•ν•˜κ³  λ°”λ‘œ 퍼블리싱과 κ°œλ°œμ— λ“€μ–΄κ°”λ‹€.
λ¨Όμ € 기초적인 ν˜•νƒœλ₯Ό html λ§ˆν¬μ—…μ„ ν•˜κ³ , cssλ₯Ό μž‘μ„±ν–ˆλ‹€. μ•„λ¬΄λŸ° 이벀트λ₯Ό κ³ λ €ν•˜μ§€μ•Šκ³  μˆœμˆ˜ν•˜κ²Œ λ””μžμΈλŒ€λ‘œ 퍼블리싱 μž‘μ—…μ„ λ§ˆμ³€λ‹€.

λŒ€λž΅μ μΈ 퍼블리싱 μž‘μ—…μ„ λ§ˆμΉ˜κ³ λ‚˜μ„œ javascriptμž‘μ—…μ— λŒμž…ν•˜λ©΄μ„œ reactλ₯Ό μ†λŒ€κΈ° μ‹œμž‘ν–ˆλ‹€.

photo-layout-editor-007.png

reactκ°€ μ»΄ν¬λ„ŒνŠΈμ—μ„œ dom이 λ“€μ–΄κ°€κΈ° λ•Œλ¬Έμ— 퍼블리싱이 사싀 κ°œλ°œμ΄λ‚˜ λ§ˆμ°¬κ°€μ§€λ‹€.
각쒅 μ΄λ²€νŠΈμ— μ˜ν•΄ λ³€ν™˜λ˜λŠ” 화면도 css둜 μ²˜λ¦¬ν•˜λŠ”κ²ƒμ΄ 훨씬 νš¨μœ¨μ μ΄μ–΄μ„œ(css3 transform을 높은 퍼포먼슀λ₯Ό κ°€μ§„ μ• λ‹ˆλ©”μ΄μ…˜μ„ κ΅¬ν˜„ν•  수 μžˆλ‹€.) 슀크립트 κ°œλ°œμ„ ν•˜λ©΄μ„œ cssμž‘μ„±λ„ 같이 ν•œ νŽΈμ΄μ—ˆλ‹€.

처음 μž‘μ—…ν• λ•Œμ—λŠ” 졜고의 λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈλ₯Ό ν•œκ°œλ‘œ ꡬ성을 ν–ˆλ‹€.
κ·Έ μ†μ—μ„œ 각각에 κΈ°λŠ₯에 λ§žλŠ” μ»΄ν¬λ„ŒνŠΈλ“€μ„ 넣어놓고 κ·Έ ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈ μ œμž‘μ„ μ΄μ–΄λ‚˜κ°”λ‹€.

λ‹¨μˆœν•œ ν˜•νƒœμ—¬λ„ λ§Œλ“€λ‹€λ³΄λ‹ˆ λŒ€λ‹¨νžˆ λ§Žμ€ μ»΄ν¬λ„ŒνŠΈκ°€ λ§Œλ“€μ–΄μ§€κ²Œ λ˜μ—ˆλŠ”λ° 이것듀을 μ„œλ‘œ ν†΅μ‹ ν•˜λŠ”λ²•μ— λŒ€ν•΄ λ§Žμ€ 어렀움을 느끼게 λ˜μ—ˆλ‹€.
fluxλ₯Ό μ‚¬μš©ν•΄λ³ΌκΉŒ μ‹Άμ—ˆμ§€λ§Œ 아직 κ°œλ…μ΄ 이해가 μ•ˆκ°€λŠ” μƒνƒœκ³ , 많이 μ§„μ²™λœ μƒνƒœλΌμ„œ μ μš©ν•˜κΈ°κ°€ 무리가 μžˆμ—ˆλ‹€.

일단 큰 μ˜μ—­μ„ λ‚˜λˆ„μ–΄ κ°€μž₯ 큰 λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ—¬λŸ¬κ°œλ‘œ λ‚˜λˆ„κ³ , λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈ 객체듀을 ν•œ 객체에 λ‹΄μ•„ κ΄€λ¦¬ν•˜λŠ” ꡬ쑰둜 λ°”κΎΈμ–΄μ„œ μ„œλ‘œ λ©€λ¦¬μžˆλŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό 톡신할 수 μžˆλ„λ‘ κ°œμ„ ν–ˆλ‹€.

μ‚¬μ΄λ“œλ°”λΌλŠ” μ΄λ¦„μ˜ μ»΄ν¬λ„ŒνŠΈλŠ” 사진을 μ—…λ‘œλ“œν•˜κ³  μ—…λ‘œλ“œν•œ 사진을 λ‹΄μ•„λ‘λŠ” 역할을 ν•˜λŠ”λ° λ‘œμ»¬μ— 사진을 μ˜¬λ¦¬κ±°λ‚˜ μ„œλ²„ ν”„λ‘œκ·Έλž¨μ„ ν˜ΈμΆœν•˜μ—¬ 사진을 μ„œλ²„μ— 올릴 수 μžˆλŠ” ν˜•νƒœλ‘œ 슀크립트λ₯Ό μž‘μ„±ν–ˆλ‹€.

μ»¨ν…Œμ΄λ„ˆ μ˜μ—­μ€ νˆ΄λ°” μ΄λ²€νŠΈκ°€ λ“€μ–΄κ°€κ³ , λΈ”λŸ­μ„ νŽΈμ§‘ν•  수 μžˆλŠ” gridster jQuery ν”ŒλŸ¬κ·ΈμΈμ΄ λ“€μ–΄κ°„λ‹€.
κ°€μž₯ 큰 λ¬Έμ œλŠ” gridsterλŠ” react μ»΄ν¬λ„ŒνŠΈκ°€ μ•„λ‹ˆλΌμ„œ μ»¨νŠΈλ‘€ν•˜λŠ”μΌμ΄ μ—¬κ°„ 쉽지가 μ•Šμ•˜λ‹€.

cropper μ»΄ν¬λ„ŒνŠΈλ“€λ„ κ·ΈλŸ­μ €λŸ­ λ§Œλ“€μ–΄λƒˆλ‹€.

result μ»΄ν¬λ„ŒνŠΈκ°€ 이 μž‘μ—…μ„ ν• λ•Œμ˜ κ°€μž₯ ν•˜μ΄λΌμ΄νŠΈμ˜€λ˜ 것 κ°™λ‹€.
λͺ¨λ“  λΈ”λŸ­κ³Ό μ΄λ―Έμ§€λ“€μ˜ 데이터λ₯Ό λ°›μ•„ μ²˜λ¦¬ν•˜μ—¬ JSON으둜 λ½‘μ•„μ˜€κ±°λ‚˜ 이미지 λ°μ΄ν„°λ‘œ λ½‘μ•„μ˜€λŠ” 역할을 ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ‹€.
특히 이미지 λ°μ΄ν„°λ‘œ λ³€ν™˜ν• λ•Œ μˆœκ°„μ μœΌλ‘œ canvas νƒœκ·Έλ₯Ό λ§Œλ“€κ³  거기에닀 그리고 base64 ν˜•μ‹μ˜ 이미지 λ°μ΄ν„°λ‘œ λ³€ν™˜ν•˜μ—¬ μ‚¬μš©ν•˜λ„λ‘ λ§Œλ“€μ—ˆλ‹€.

이 μž‘μ—…μ„ ν•˜λ©΄μ„œ drag&drop 이벀트λ₯Ό 직접 λ§Œλ“€μ–΄λ³΄λŠ” 쒋은 κ²½ν—˜μ„ ν•΄λ³΄κ²Œ λ˜μ—ˆλ‹€. νƒœλΈ”λ¦Ώ λ””λ°”μ΄μŠ€μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜λ„λ‘ ν•˜κΈ° μœ„ν•˜μ—¬ νƒ­ μ΄λ²€νŠΈλ„ 손보고 ν•˜λ‹€λ³΄λ‹ˆ μž‘μ—…μ–‘μ΄ λ§Žμ•„μ§€κ³ , 그만큼 μž‘μ—…μ‹œκ°„λ„ κΈΈμ–΄μ§€κ²Œ λ˜μ—ˆλ‹€.

기본적인 κΈ°λŠ₯에 λŒ€ν•œ μž‘μ—…μ΄ λλ‚˜κ³ λ‚˜μ„œλ³΄λ‹ˆ μ»΄ν¬λ„ŒνŠΈλ‚˜ λ©”μ„œλ“œλ“€μ„ μ ‘κ·Όν•  수 μžˆλŠ” 방법듀이 μ œκ°κ°μ΄μ–΄μ„œ apiλΌλŠ” 객체λ₯Ό λ§Œλ“€κ³ , λ©”μ„œλ“œλ₯Ό μ ‘κ·Όν•˜λ©΄ μ‰½κ²Œ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄ λ³΄μ•˜λ‹€. μ—¬κΈ°μ—μ„œ λ¬Έμ„œμž‘μ—…μ„ ν•  λ•Œ 많이 νŽΈν•΄μ‘Œλ‹€.

End

μ™ΈλΆ€ κ°œλ°œμžκ°€ 이 ν”„λ‘œκ·Έλž¨μ„ ν™œμš©ν•˜κ±°λ‚˜ κΈ°λŠ₯을 μˆ˜μ •ν•  수 μžˆλ„λ‘ λ§Žμ€ 고민을 ν–ˆλŠ”λ° 이게 μ΅œμ„ μΈμ§€λŠ” λͺ¨λ₯΄κ² λ‹€.
무엇보닀 API객체λ₯Ό λ§Œλ“€μ–΄λ‘” 덕뢄에 λ‹€λ₯Έμ‚¬λžŒμ΄ μ»¨νŠΈλ‘€μ„ ν•  수 μžˆλ„λ‘ λ¬Έμ„œλ₯Ό λ§Œλ“œλŠ”λ° λ§Žμ€ 도움이 λ˜μ—ˆλ‹€.

이 ν”„λ‘œκ·Έλž¨μ΄ ν˜Όμžμ„œ μ§„ν–‰ν•˜λŠ” μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈλΌμ„œ 일정이 μ—†λ‹€λ³΄λ‹ˆ μ‹œκ°„μ΄ ν•œλ„λλ„μ—†μ΄ 걸리게 λ˜μ–΄μ„œ 기간이 λͺ‡λ‹¬μ΄λ‚˜ κ±Έλ Έλ‹€.
μ‹€ μž‘μ—…μ‹œκ°„μ€ 훨씬 μ§§μ§€λ§Œ μž‘μ—…μ„ μ•ˆν•˜λŠ” 날도 λ§Žμ•˜κ³ , μ†λŒ€λ©΄ λͺ‡μ€„ 적고 끝낸적도 μžˆκΈ°λ„ ν•˜κ³ , ν”„λ‘œμ νŠΈλ₯Ό μ—Žμ–΄λ²„λ¦°λ•Œλ„ μžˆλ‹€λ³΄λ‹ˆ 기간이 κΈΈμ–΄μ§ˆ 수 밖에 μ—†μ—ˆλ‹€.

아무리 μ§„ν–‰ μ‹œκ°„μ΄ 길어지더라도 μ΄λ ‡κ²Œ μ™„μ„±ν•˜κ³ λ‚˜λ‹ˆ 보람이 생겼닀.

이걸 μ΄μš©ν•˜μ—¬ λ‹€λ₯Έμ‚¬λžŒλ“€μ΄ λ©‹μ§„ 컨텐츠λ₯Ό λ§Œλ“€μ—ˆμœΌλ©΄ ν•˜λŠ” λ°”λž¨λ„ 생긴닀.

메타데이터

쑰회수
1312
μ’‹μ•„μš”
1