ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 이미지캡쳐 모듈 (Html2Image)
    IT/파이썬 2021. 11. 13. 17:21
    from flask import Flask, send_from_directory, send_file
    from html2image import Html2Image
    
    app = Flask(__name__)
    
    
    @app.route("/")
    def hello_world():
        url = 'https://www.python.org'
        width = 1200
        height = 1024
        filename = 'download_img.png'
    
        hti = Html2Image()
        # 다음처럼 저장경로도 수정가능함
    	# path = "C:\\ProgramData\\"
    	# hti = Html2Image(output_path=path)
        hti.screenshot(url=url, save_as=filename, size=(width, height))
        # hti.screenshot(html_str=html, save_as=filename, size=(width, height))
        # hti.screenshot(url='https://www.python.org', save_as='python_org.png')
    
        # send_from_directory(directory=app.config['UPLOAD_FOLDER'], filename=filename)
        # send_file(filename, mimetype='image/png')
    
        return "<p>Hello, World!</p>"
        # 브라우저에 캡쳐파일 바로 띄우기
        # return send_file(filename, mimetype='image/png')
    
    
    
    if __name__ == "__main__":
        # 터미널창에서 python app.py 로 실행
        app.run(host='0.0.0.0', port=3000, debug=True)

     Html2Image를 사용해서 이미지를 캡쳐하는 간단한 소스다.

     size 설정을 하지 않는다면 전체 페이지에 대해 캡쳐를 진행하고, html_str 요소를 사용해 html파일을 받아서 이미지 파일로 캡쳐하거나 파일형태로 다른 서버에 전달할 수도 있다.

     해당 모듈 사용하면서 생긴 문제를 하나 공유하자면 해당 소스(Html2Image 모듈)가 실행되는 서버에 chrome 엔진 그러니깐 크롬브라우저가 설치되어있어야 실행된다. 그리고 Html2Image가 크롬 브라우저를 켜서 캡쳐를 진행(실제로 작업이 보이진 않음)하므로 서버가 CLI환경이라며 추가적인 작업이 필요한 것 같다. 리눅스던 윈도우던 GUI환경이라면 크롬 브라우저만 설치 해주면 된다.

     

    리눅스 크롬브라우저 설치는 아래 링크를 참조

    https://www.lesstif.com/lpt/linux-chrome-106857342.html

    댓글

Designed by Tistory.