Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
KMM Colorpicker App
Search
ChungKyu Yu
January 16, 2024
Technology
0
26
KMM Colorpicker App
KMM 을 활용한 대표 컬러 찾기 프로젝트
LinkedIn :
https://www.linkedin.com/in/yuskyblue/
ChungKyu Yu
January 16, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
続・やっぱり余白が大切だった話
kakehashi
PRO
4
350
MCP でモノが動くとおもしろい/It is interesting when things move with MCP
bitkey
3
580
kernelvm-brain-net
raspython3
0
620
Ruby on Rails の楽しみ方
morihirok
6
2.8k
正式リリースされた Semantic Kernel の Agent Framework 全部紹介!
okazuki
1
1.2k
正解のない未知(インボイス制度対応)をフルサイクル開発で乗り越える方法 / How to overcome the unknown invoice system with full cycle development
carta_engineering
0
110
地に足の付いた現実的な技術選定から魔力のある体験を得る『AIレシート読み取り機能』のケーススタディ / From Grounded Tech Choices to Magical UX: A Case Study of AI Receipt Scanning
moznion
5
1.7k
AIによるコードレビューで開発体験を向上させよう!
moongift
PRO
0
450
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
8
64k
4月15日の AZ 障害をテクサポの中の人目線で振り返ってみる
kazzpapa3
1
120
計測による継続的なCI/CDの改善
sansantech
PRO
7
1.6k
Azure × MCP 入門
ry0y4n
8
1.8k
Featured
See All Featured
Side Projects
sachag
453
42k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
How STYLIGHT went responsive
nonsquared
100
5.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Agile that works and the tools we love
rasmusluckow
329
21k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
GitHub's CSS Performance
jonrohan
1031
460k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.5k
Raft: Consensus for Rubyists
vanstee
137
6.9k
KATA
mclloyd
29
14k
Transcript
Kotlin Multi Platform Project : Color Picker [Blue Star] 옥수환
유청규
시연
Table of Contents Blue Star 1. 주제 선정 2. 참고
자료 3. 진행 과정 4. 종료 후기
주제선정
옥수환 - 주어진 이미지에서 대표 색상을 추출하고 싶다. 유청규 -
KMM 으로 간단하게 이미지를 처리하는 앱을 만들어 보고 싶다. 주제 선정 Blue Star
참고자료
참고 자료 Blue Star [XML] [Compose]
참고 자료 Blue Star
진행과정
진행 과정 Blue Star [옥수환] [유청규] XML + Compose 적용
후 -> KMP 좌표 값 색상 추출 적용 주어진 이미지에서 대표 컬러 구하는 Usecase 구현
진행과정 이미지 가져오기
진행 과정 - 이미지 가져오기 Blue Star commomMain (App Screen)
Android iOS 공통적인 뷰를 가지고 있으면서 Photo Picker 처럼 Dependency 있는 부분 각각 구현
진행 과정 - 이미지 가져오기 Blue Star Comm (Get Dominant
Color) Android iOS [image URL Format] Photo 형식을 URL형식으로 가져옴
진행과정 이미지 프로세싱
진행 과정 - 이미지 프로세싱 Blue Star [Image URL] URL
형식의 이미지를 Decode 하여 원하는 이미지 객체인 BSImage로 반환 [Use Case decode] BS Image [Image Object]
진행 과정 - 이미지 프로세싱 Blue Star [CommomMain] [androidMain] [iosMain]
진행 과정 - 이미지 프로세싱 Blue Star Android 예시 any
로 객체로 받아 디코딩 하여 원하는 이미지 객체 반환
진행과정 대표값 찾기
진행 과정 - 대표값 찾기 Blue Star Commommain (Get Dominant
Color) Android iOS
진행 과정 - 대표값 찾기 Blue Star CommomMain (Get Dominant
Color) Android iOS X Y X, Y를 돌면서 회색조 판단 Map 에 GrayScale 이미지 제외한 색깔을 Counting
진행 과정 - 대표값 찾기 Blue Star CommomMain (Get Dominant
Color) Android iOS
진행 과정 - 대표값 찾기 Blue Star CommomMain (Get Dominant
Color) Android iOS Most Common Color Value 산출
진행 과정 - 대표값 찾기 Blue Star commomMain (App Screen)
Android iOS
진행 과정 - 대표값 찾기 Blue Star commomMain (App Screen)
Android iOS 대표값 각 OS 별 삽입
진행과정 이미지 좌표 값 출력
진행 과정 - 이미지 좌표 값 출력 Blue Star Image
dominant Color Color Value [App Screen] image의 임의에 지점을 클릭
진행 과정 - 이미지 좌표 값 출력 Blue Star Image
dominant Color Color Value [App Screen] offset 좌표 값 추출 및 이미지 디코드 BSImage Color Value
진행 과정 - 이미지 좌표 값 출력 Blue Star Image
dominant Color Color Value [App Screen] BSImage Color Value CommomMain (GetColorByPos itionUseCase) 이미지 / 좌표값 / 비율
진행 과정 - 이미지 좌표 값 출력 Blue Star Image
dominant Color Color Value [App Screen] BSImage (255,165,0) CommomMain (GetColorByPos itionUseCase) 대표값 다시 적용 ex) orange -> purple
진행 과정 - 이미지 좌표 값 출력 Blue Star Image
dominant Color Color Value [App Screen] BSImage (160,32,240) CommomMain (GetColorByPos itionUseCase) 대표값 다시 적용 ex) orange -> purple
종료후기
종료 후기 Blue Star [옥수환] [유청규] KMP 는 유즈케이스에 대해
전반적인 설계 및 OS Dependency 생기지 않도록 만드는 것이 중요하다 KMM으로 프로젝트 진행시 코틀린으로 최대한 공통로직을 작성하고, 특수한 상황을 제외하고는 expect/actual을 통한 플랫폼 분기 구현은 최소화하는 게 좋을 것 같다.