이 예제에서는 미션으로 png, jpg 같은 이미지 확장자 파일을 gif 파일로 움직이는 이미지로 바꾸는 프로그램을 만들려고 한다.

미션은 정적인 이미지를 → 애니메시연 이미지 변환 패키지를 만들 예정이다.

그러나 나는 우선은 가볍게 읽어보기로 했다.

왜냐하면 나는 작업한 걸 올리는게 중요하기 때문이다.

import glob
from PIL import Image

# 이미지, 결과 생성 경로
path_in = './images/*.png'
path_out = './project/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=1,
)

처음 초안 ..

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'
        self.path_out = path_out or './output.gif'
        self.resize = resize

    def convert_gif(self):
        """
        gif로 변환을 해준다.
        :return: git image file
        """
        print(self.path_in, self.path_out, self.resize)

        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('./project/images/*.png', '.project/image_out/result.gif')
    c.convert_gif()

이것을 이것을 사용하는 방법을 사용하고

Pypi 올리는 방법

  1. Pypi 아이디 만들기
  2. 프로젝트 구조 확인
  3. init.py
  4. 프로젝트 Root 필수 파일 작성
    1. README.md(option..)
    2. setup.py
    3. setup.cfg(optional)
    4. LICENSE
    5. MANIFEST.in
  5. pip install setuptools wheel 설치 후 빌드 업 → 설치판 생성
    1. 설치 : python -m pip install —upgrade setuptools wheel
    2. 설치 : python -m pip install —user —upgrade setuptools wheel
    3. 빌드 : python setup.py sdist bdist_wheel
  6. Pypi 배포
    1. 설치 : pip install twine
    2. 업로드 : python -m twine upload dist/*
    3. 아이디 쳐주면 된다.

프로젝트 구조

setup.py에 대해서 알 필요가 있다. 이게 필요하다.

이거에 대해서 자세히 나오는 방법은 다음과 같다.