발행일 2022-05-19 18:51
서버로 사진을 보내고 변환 후 사용자 휴대폰으로 다시 데이터를 받아와야하는데
그래서 생각한 것이 버튼을 3개를 만드는 것이다.
[사진선택] - [변환하기] - [결과보기]
이렇게 3개의 버튼을 만들고
각각 이전 버튼의 작업이 끝나야만 동작되도록 하는 것이다.
[변환하기] 로 S3에 올린 사진을 변환 후 버킷 내 before 폴더에 저장하고
[결과보기] 로 S3 버킷 안의 after 폴더 에서 데이터를 받아오는 것이다.
광고는 [변환하기] 가 활성화 되고 클릭이 되었을 때 나오도록 하면 될 것 같다.
근데 그건 나중이고
- 3 버튼 구현
결과 보기 버튼을 추가로 만들어 주자
그리고 이전 단계들이 완료되어야만 다음 버튼을 눌렀을때 실행되게 하고
이전 단계가 완료되지 않았다면 팝업이 뜨도록 해보자
팝업을 만드는 과정은 이 유튜브를 참고해서 만들었다
중간에 getcacheDir() 을 사용하는데 오류가 있어서 시간이 좀 오래 걸렸다...
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=bgpoilkj&logNo=222030724865
여기다가 구현할꺼다
- 간단한 사진 변환 후 다른 버킷에 저장
간단한 변환만 할 생각이라 입력된 사진을 좌우 반전시켜서 다른 버킷에 저장해보자
그럼 우선
- S3에 이미지가 들어오는 것을 트리거로 한 lambda 함수를 만들어 보자
이거 알아보는데만 거의 2시간 썻는데
일단 S3 트리거를 만들고 기본 lambda 함수를 활용해서 이미지를 만지려는데
event 로 받아온 이미지 경로정보를 명확하게 하는게 힘들었다.
s3에 이미지를 올리니 이렇게 로그에 'Records' 정보가 나오는데
이중에서 어떤걸 빼내야 python 으로 이미지 파일을 열 수 있는지 잘 모르겠다
역시 잘 모를땐 공식문서 찾아보는게 ㅋㅋ
이걸 보고 각각의 코드가 뭘 의미하는지 알고싶었는데
uuid 쪽이나 /tmp 를 이용하는게 무슨 소리인지 이해가 안되서 그냥 무지성으로 코드 복붙해서 쓰기로 했다;;
그냥 저걸 쓰면 s3 이벤트를 받아서 쓸 수 있다 까지만 이해하자
이게 한계다 ㅅㅂ
그래서 그냥 코드 가져다 쓰려는데
[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'PIL'
;; 이건 또 뭐임
모듈을 추가해주자...
https://jsikim1.tistory.com/180
이분 블로그를 따라했다
pillow 를 받아주고
lambda 에 계층을 새로 생성해줬다
그리고 lambda 함수로 들어가 생성한 계층을 추가해줬다
그래도 안된다
이것만 몇시간째 하는지 모르겠다
https://github.com/keithrozario/Klayers/blob/master/deployments/python3.8/arns/ap-northeast-2.csv
여기서 arn 으로 찾아서 layer 를 넣어봤는데
[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': cannot import name '_imaging' from 'PIL' (/opt/python/PIL/__init__.py)
이라고 하는데
( 이미 지금 몇시간 연속으로 하고있어서 좀 지침
비공개로 저장하고 이따 오후헤 시험공부 하고나서 다시 만져보자 )
5.21 00:48
다시 위에 저 오류 구문을 해결해보자
https://stackoverflow.com/questions/57197283/aws-lambda-cannot-import-name-imaging-from-pil
음 잘 모르겠는데 대충 보니까
지금 내 lambda에서의 python version이 3.7이여서 그런가보다
3.8로 새로 만들어서 진행해보자
이전에 pillow 로 계속 오류가 나서
다른 라이브러리인 opencv 로 해보려고 했는데
이번엔 또 새로운 오류가 나타났다
[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': libgthread-2.0.so.0: cannot open shared object file: No such file or directory
Traceback (most recent call last):
파일이나 디렉토리가 없다고??
.
.
.
.
.
.
.
.
별 지랄 다해봤는데
계층으로 할수있는건 없고
결국 ec2 를 만들여서 lambda 에 연동해야 하나보다
뭐 어쩌겠어 해야지
처음부터 다시 해보자
- 변환한 사진 S3로부터 android로 불러오기
'Archive > [App] 도트감성:pixel painter' 카테고리의 다른 글
[5주-1일차] pixel painter APP - 도트 그림판 구현 정보수집 (0) | 2022.06.07 |
---|---|
[5주-0일차] pixel painter APP - 5주차 스프린트 계획 수립 (0) | 2022.06.04 |
[4주-2일차] pixel painter APP - android to S3 (0) | 2022.05.18 |
[4주-1일차] pixel painter APP - 앱의 대략적인 UI 구현 (0) | 2022.05.16 |
[4주-0일차] pixel painter APP - 4주차 스프린트 계획 수립 (0) | 2022.05.14 |