여니의 Side Project/인프런 - 리프 (파이썬 고급)

[인프런 리프 대학생 2기] Chapter4. 오픈소스 프로젝트(1)

여니's 2021. 3. 30. 17:50

 

* 오픈 소스 사용시 장점 *

1. 개발 과정에서 개발 역량 향상 and 보유 스킬 능력 향상

2. In-house(집에서 혼자 개발)하는 것과 달리 수많은 디버깅, 개선을 통해

신뢰성 , 안정성이 높은 어플리케이션 도출이 가능

3. 바로 사용이 가능하다. 아키텍처 호용성과 고품질을 보장함 (클론해와서)

4. 문서 , 개선가능성, 지적재산권 (라이센스) -> 주의해야 함!

gpl버전2, ....

 

 


 

* 오픈 소스(사이드 프로젝트) 참가 장점 *

1.  답변, 기능추가, 사명감(누군가에게 도움이 된다.)

2. 다양한 이슈 해결을 통해 개발 역량 강화

3. 코드퀄리티, 알고리즘, 다양한 지식이 향상된다.

4. 구직시 합격 가능 매우 높다. 창업 시 좋은 팀원 셋업 가능성 향상

5. 이슈 등재를 통해서 문제 해결 가능성이 매우 높다.

(이슈나 stackoverflow에 올려보기)

6. 복잡하고 다양한 기능 배제하고

처음에는 단 몇줄이라도 오픈소스 업로드 추천!!

7. 효율적인 코드 작성 노하우 향상


* 오픈 소스 사용시 장점 *

1. 개발 과정에서 개발 역량 향상 and 보유 스킬 능력 향상

 

2. In-house(집에서 혼자 개발)하는 것과 달리 수많은 디버깅, 개선을 통해

 

신뢰성 , 안정성이 높은 어플리케이션 도출이 가능

 

3. 바로 사용이 가능하다. 아키텍처 호용성과 고품질을 보장함 (클론해와서)

 

4. 문서 , 개선가능성, 지적재산권 (라이센스) -> 주의해야 함!

 

gpl버전2, ....

 

 


 

* 오픈 소스(사이드 프로젝트) 참가 장점 *

1. 답변, 기능추가, 사명감(누군가에게 도움이 된다.) 

2. 다양한 이슈 해결을 통해 개발 역량 강화

3. 코드퀄리티, 알고리즘, 다양한 지식이 향상된다.

4. 구직시 합격 가능 매우 높다. 창업 시 좋은 팀원 셋업 가능성 향상

5. 이슈 등재를 통해서 문제 해결 가능성이 매우 높다.

(이슈나 stackoverflow에 올려보기)

6. 복잡하고 다양한 기능 배제하고

처음에는 단 몇줄이라도 오픈소스 업로드 추천!!

7. 효율적인 코드 작성 노하우 향상

 

 


 

패키지 만들기 (1)


import glob  # 폴더에 잇는 다양한 이미지들을 한 번에 가져와서 리스트 형태로 반환해줌
from PIL import Image

# 이미지, 결과 생성 경로
path_in = '../section4/image/*.jpg'  # 확장자 지정해주고 원하는 걸 뽑아올 수 있다
path_out = '../section4/image_out/result.gif'

# 첫 번째 이미지 & 모든 이미지 리스트
# img, *images = [Image.open(f) for f in sorted(glob.glob(path_in))]

# 이미지 크기 통일시키기
img, *images = [Image.open(f).resize((320,240),Image.ANTIALIAS) for f in sorted(glob.glob(path_in))]

# 이미지 저장
img.save(
    fp=path_out,
    format='GIF',
    append_images=images,
    save_all=True,
    duration=500,  # 크기가 클 수록 화면 전환 속도가 느려짐
    loop=0
)

> 경로가 하드코딩 된 상태라 다음 장에서 변경 예정

> 사이즈도 동적으로 변경가능하게 바꿀 예정

 

 


패키지 만들기(2)


클래스 GifConvert를 이용하여,

path_in, path_out, resize 정보를

동적으로 받아서

사용자가 원하는 사이즈의 이미지를

gif 파일로 저장하는 것!

 

이미지 경로도 하드코딩하지 않고

저렇게 입력 받으면,

더 편하다!

import glob
from PIL import Image


class GifConverter:
    def __init__(self, path_in=None, path_out=None, resize=(320, 240)):
        '''
        path_in : 원본 여러 이미지 경로 (Ex:images/*.png)
        path_out : 결과 이미지 경로 (Ex : output/filename.gif)
        resize : 리사이징 크기 (320,240)
        '''
        self.path_in = path_in or './*.png'  # 현재 경로에서 png가 있는 곳에서 실행하기(예외발생 방지)
        self.path_out = path_out or './output.gif'
        self.resize = resize

    def convert_gif(self):
        '''
        GIF 이미지 변환 기능 수행
        '''
        img, *images = \
            [Image.open(f).resize(self.resize, Image.ANTIALIAS) for f in sorted(glob.glob(self.path_in))]

        try:
            img.save(
                fp=self.path_out,
                format='GIF',
                append_images=images,
                save_all=True,
                duration=500,  # 크기가 클 수록 화면 전환 속도가 느려짐
                loop=0
            )
        except IOError:
            print('Cannot convert', img)


if __name__ == "__main__":
    # 클래스
    c = GifConverter('../section4/image/*.jpg', '../section4/image_out/result.gif', (320, 240))

    # 변환
    c.convert_gif()

결과물


 

 강의명 : 모두를 위한 파이썬

inf.run/CKC8

 

모두를 위한 파이썬 : 필수 문법 배우기 Feat. 오픈소스 패키지 배포 (Inflearn Original) - 인프런 | 강

폭넓은 파이썬 개발 경험, 온오프라인 수업 경험을 바탕으로 파이썬 메타프로그래밍, 깊이있는 문법을 다루기 위한 과정입니다. 더 나아가 파이썬 취준생 면접 및 경력자분들의 기술면접에도

www.inflearn.com