iPad Pythonista 3: 사진을 크기 조정하는 프로그램

(2021.09.26)

소개



M1 iPad Pro 12.9-inch를 샀다. 메인에서 사용하고 있는 M1 MacBook Air보다 비싸기 때문에, 그것보다 일해야 한다. 그러나 iPad에서는 Python을 Mac과 동등하게 사용할 수 없기 때문에 (라이브러리와 앱의 안정성 등 때문에) 적어도 블로그 업데이트 정도는 iPad Pro에서 할 것이라고 생각했다. 이 경우 텍스트를 넣는 정도라면 어쨌든 되는 것이지만, iPad의 표준 기능으로는 사진의 리사이즈를 할 수 없다. 그래서 iPad 앱인 Pythonista 3에서 이미지 크기를 변경하는 프로그램을 만들었다. 이 프로그램에서는 픽셀의 가로 사이즈는 800 에 고정하고 있다.

이 문서는 iPad Pro로 작성하고 있지만, MacBook Air와 접속한 27-inch display를 사용하면서의 문서 작성과 비교하면, 역시 비좁은 생각이 든다. 그러나 iPad에서는 문자 (표시 영역)의 확대 등을 한 손으로 쏠 수 있기 때문에 익숙해지면 편안해질 수 있습니다.

사용법



사용법은 다음과 같습니다.
  • 리사이즈하고 싶은 사진은 Files 앱 안에 적당한 폴더를 작성해 거기에 복사해 둔다.
  • Pythonista 3과 Files를 split view로 엽니 다.
  • Files 앱에서 사진이 저장된 폴더를 선택하고 사진을 보고 표시합니다.
  • 공유 메뉴 아이콘(사각형의 위쪽 화살표)을 열고 Run Pythonista Script => Edit Script => 프로그램(이 경우 py_resize.py)을 선택하여 실행합니다.
  • 실행 결과로 프로그램이 저장된 Pythonista 폴더에 크기가 조정된 사진이 저장됩니다. 파일명은, 원래의 이름의 전에 ‘800_’ 하지만 붙어, 확장자는 ‘jpg’ 가 되어 있을 것.
  • Pythonista에서 크기 조정 된 사진을 선택하고 Open in ...을 선택하고 Save to Files로 저장할 폴더를 선택하십시오.

  • 사진 회전



    사진을 회전시키고 싶을 때는 Files 앱의 기능을 사용한다. 사진 위에서 오른쪽 클릭(길게 누르기) 메뉴를 표시하고 회전(Rotate Left or Rotate Right)을 선택 • 실행하면 된다.

    사진 사례



    iPhone SE로 찍은 사진을, 이 프로그램을 사용해 리사이즈한 것. iPad Pro 12.9-inch에서 split view. 왼쪽은 Pythonista 3, 오른쪽은 Files 화면. MacBook Air는 열려 있지 않습니다!



    프로그램(py_resize.py)


    mport appex
    import Image
    import os
    
    def main():
    
        if not appex.is_running_extension():
            print('Running in Pythonista app, using test image...')
            img = Image.open('IMG_0001.JPG')
            fpath= 'current'
        else:
            img = appex.get_image()
            fpath=appex.get_file_path()
        if img:
            # TODO: Your own logic here...
            print(fpath)
            print('(original)',img.format)
            print('(original)',img.size)
            fname=os.path.splitext(os.path.basename(fpath))[0]
            fw='800_'+fname+'.jpg'
            print(fw)
            width=800
            height=int(float(width)/float(img.size[0])*float(img.size[1]))
            img.thumbnail((width, height), Image.ANTIALIAS)
            img.save(fw, 'JPEG', quality=100, optimize=True)
            img=Image.open(fw)
            print( '(changed)',img.format)
            print('(changed)',img.size)
    
        else:
            print('No input image found')
    
    if __name__ == '__main__':
        main()
    

    그 이상

    좋은 웹페이지 즐겨찾기