pillow의 transpose는 이미지를 선이나 점을 기준으로 뒤집을 때에도 쓰이고, 회전시킬 때에도 쓰입니다. 간단하게 실습해 보겠습니다. 먼저 원본 이미지는 LEFT입니다. transpose 함수는 리터럴 0부터 6까지를 넘기게 됩니다. 이들 각각은 회전시키거나, 뒤집을 방법을 의미해요. left.jpeg를 엽니다. 다음에 img.transpose(0)을 한 다음에, save를 합니다. 그러면, 0번 방법으로 뒤집거나 회전시키게 됩니다. 0번 방법은 무엇일까요? 기존 이미지에서 무엇이 바뀌었나요? 좌우 대칭이 되어 버렸습니다. FLIP_LEFT_RIGHT입니다. 기존 LEFT 그림에서 L 앞에 세로선을 기준으로 뒤집었다고 생각하시면 되겠습니다. 다음 1번은 어떤가요? 상하가 뒤집혀 버렸습니다. LE..
전체 글 검색 결과
안녕하세요. exif 때문에 이미지가 이상하게 돌아가는 경우가 있습니다. 이 때 (회전 정보가 있는) exif 정보를 제거하는 방법을 알아보겠습니다. 먼저, 실습에 사용될 이미지는 여기에서 구할 수 있습니다. 제 pycharm에서 down-mirrored.jpg를 열어보겠습니다. down-mirrored.jpg입니다. 아래쪽으로 뒤집어진 모양을 하고 있습니다. 원래 모양은 DOWN이 위로 오고, 다음 줄에 MIRRORED가 돠야 합니다. 회전 정보가 어딘가에 들어가 있음을 알 수 있어요. 우리는 간단하게 이미지를 열고, exif_transpose 함수를 사용해 봅시다. 이 함수의 설명을 보면, EXIF orientation tag가 있다면, 그 정보를 바탕으로 변환된 새로운 사진을 돌려주고, 원래 정보는..
파이썬의 fastapi에서 Uploadfile은 파일이 엄청나게 클 때 어떻게 관리할까요? 10기가 정도 된다고 했을 때요. UploadFile의 file이 SpooledTemporaryFile을 사용한다고 하였습니다. 파일이 매우 클 때에는 디스크의 임시 파일이 저장되는 위치에 저장하게 됩니 이 글에서는 fastapi에 대해서는 다루지 않습니다. 다만, fastapi가 매우 큰 파일에 대해서 어떻게 다루고 있고, 이를 보기 위해서 임시 파일이 저장되는 위치와, 임시 파일이 저장되는 경로를 바꾸는 방법 정도만 가이드 합니다. 먼저, tempfile은 임시 파일을 의미합니다. gettempdir()은 임시 파일이 저장되는 위치를 가지고 옵니다. Users의 chokw의 AppData의 Local의 Temp..
fastapi에서 UploadFile을 이용하여 파일을 올리고 제한 검사를 서버단에서 하는 방법을 알아보겠습니다. 먼저 로컬에 파일을 올릴 것이므로 app.mount로 미디어 경로도 같이 설정해 줍니다. 참고로 요래 설정하면, 루트 프로젝트에 media 디렉토리가 있어야 동작합니다. 다음에 upload_file 함수입니다. file의 size 체크를 해서 2메가가 넘어가는 파일은 거부합니다. 그러기 위해, await file.read()를 호출한 다음에, content의 길이가 2메가가 넘는 경우 거부를 합니다. 그렇지 않으면, path 위치에 content를 씁니다. 다음에, get_user 함수입니다. 함수 이름이 이상한 거 같은 건 넘어갑시다. /upload를 부르면 2메가 이하인 파일을 업로드 하..
fastapi에서 backgroundtask는 다소 무거운 작업을 back ground로 돌릴 때 씁니다. 예를 들자면 이메일을 보내는 시간은 다소 깁니다. 그래서, 그냥 task에 등록만 해서 background에서 돌고 있는 무언가가 처리하게 하고, 204 response를 떨어트리는 식으로 쓰게 됩니다. 매우 무거운 작업은 다른 방식을 고려하는 편이 좋습니다. main.py 입니다. 천천히 보겠습니다. write_notification입니다. 다른 건 없고요. ti초동안 sleep를 하게 됩니다. 중간에, 프로세스의 id와 thread id를 찍습니다. 이는 background task가 실행될 때 마다 어떤 것이 달라지는지 trace 하기 위함입니다. async def가 아니라, 그냥 def로 호..
최근댓글