ImageMagick | Python 2 (v2.6.6) > 파일 이름에서 날짜와 시간을 가져 와서 이미지에 날짜 및 시간 레이블 추가 > label_image_171005.py v0.1 > subprocess.call에서 항목 중 하나에 공백이 있으면 피하십시오. .split()

운영 환경
Xeon E5-2620 v4 (8コア) x 2
32GB RAM
CentOS 6.8 (64bit)
openmpi-1.8.x86_64 とその-devel
mpich.x86_64 3.1-5.el6とその-devel
gcc version 4.4.7 (とgfortran)
NCAR Command Language Version 6.3.0
WRF v3.7.1を使用。
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) 
Python 3.6.0 on virtualenv
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

관련



파이썬 > regex | slice > AAA_20170228_030000_BBB.png | re.sub()에서 문자 대체

처리 내용


  • 파일 이름
  • 예: AAA_20170228_030000_BBB.png

  • 이미지에 2017/02/28 03:00라는 레이블을 추가합니다.

  • 참고



    ImageMagick 이미지에 문자 넣기

    코드 v0.1



    label_image_171005.py
    from __future__ import absolute_import
    from __future__ import division
    from __future__ import print_function
    import sys
    import re
    import sys
    import subprocess as sb
    
    # on Python 2.6.6
    #    ImageMagick 6.7.2-7
    # coding rule: PEP8
    
    # v0.1 Oct. 5, 2017
    #   - execute convert command to add label to the image
    #   - add get_datetime_label()
    #   - add debug_make_dummy()
    
    
    def debug_make_dummy():
        acmd = "convert -size 430x360 xc:white AAA_20170228_030000_BBB.png"
        sb.call(acmd.split())
    
    
    def get_datetime_label(filename):
        # input(filename): e.g. AAA_20170228_030000_BBB.png
        #
        date_hhnn = re.sub(r'.*_(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2})_.*',
                           r'\1/\2/\3 \4:\5',
                           filename)
        return date_hhnn
    
    # @spec
    # convert -pointsize 20 -annotate +80+50 '2017/02/28 03:00'
    #   AAA_20170228_030000_BBB.png out_labeled.png
    
    SEPARATOR = "="  # prevent separation by " " of the date_hhnn
    
    IMG_CMD = "convert"
    PARAM = "-pointsize 20 -annotate +80+50"
    aparam = PARAM.replace(" ", SEPARATOR)
    TEXT = "WHITE"
    SRC = "AAA_20170228_030000_BBB.png"
    DST = "out_labeled.png"
    
    #debug
    debug_make_dummy()
    #
    
    albl = get_datetime_label(SRC)
    print(albl)
    
    acmd = "=".join([IMG_CMD, aparam, albl, SRC, DST])
    cmdlist = acmd.split(SEPARATOR)  # prevent separation by " " of the date_time
    print(cmdlist)
    
    sb.call(cmdlist)
    

    실행
    2017/02/28 03:00
    ['convert', '-pointsize', '20', '-annotate', '+80+50', '2017/02/28 03:00', 'AAA_20170228_030000_BBB.png', 'out_labeled.png']
    

    out_labeled.png가 생성됩니다.

    생성 이미지





    흠집



    sb.call(cmdlist)시에 split()이라고 하면 「2017/02/28 03:00」문자열중의 공백도 분리 대상이 되었다.
    "="를 구분 기호로 설정하여 해결했습니다. 깔끔한 방법이 아니다.

    가르쳐 주신 항목



    @shiracamus 씨의 코멘트 에서 분명한 방법을 가르쳐 주셨습니다.

    정보 감사입니다.

    좋은 웹페이지 즐겨찾기