ImageMagick 사용(Windows편)

이미지 처리 라이브러리 "ImageMagick"을 사용해보기

참고:
ImageMagick (1) 설치편

목적


  • 대량의 이미지를 세로, 가로로 분류하고 싶다 (ImageMagick)

  • 전제


  • ImagiMagick
  • 즉시 지울 수 있으므로 휴대용 버전을 사용하십시오.
  • 곧 지울지도 모르기 때문에 패스는 통과하지 않는다
  • Git Bash가 도입되었으므로 이제 Unix 명령을 사용합니다.


  • 소개



  • 다운로드 페이지에서 "ImageMagick-7.0.7-8-portable-Q16-x64.zip"다운로드
  • C:\library\ImageMagick 에 배포
  • C:\Temp에서 Git Bash 시작 (오른쪽 클릭 → "Git Bash Here")
  • 아래 명령을 실행하여 이미지의 너비와 높이를 얻고 표시합니다.


    ↑ affine.png : 304pixel x 85pixel의 이미지 (ImageMagick 부속의 이미지집에서)
    $ /c/library/ImageMagick/identify.exe -format "%w %h" /c/library/ImageMagick/images/affine.png
    304 85
    

    이미지의 크기를 얻을 수 있었으므로 도입 성공



    동작을 확인하면서 원하는 쉘 스크립트 작성


    $ cat definition
    ROOT_PATH="/c/Temp/"
    IDENTIFY="/c/library/ImageMagick/identify.exe"
    TEMP_FOLDER="_temp"
    HEIGHT="_hight-is-longer"
    WIDTH="_width_is_longer"
    
    $ cat testShell01.sh
    #!/bin/bash
    
    function isPicture(){
        # 拡張子で画像かどうか判定
        case ${FILE_EXTENSION} in
            "jpg" ) TOF="true";;
            "png" ) TOF="true";;
            * ) TOF="false";;
        esac
    }
    
    . ./definition
    
    # _____picuturesの中のファイル一覧
    ARRAY=$(ls ${ROOT_PATH}${TEMP_FOLDER}/)
    
    if [ -n "${ARRAY}" ]; then
        # 一枚ずつサイズを取得して縦横の長さを比較
        for item in ${ARRAY[@]};do
            FILE_EXTENSION=$(echo ${item} | sed 's/^.*\.\([^\.]*\)$/\1/')
            isPicture
            # 対象のファイルが画像かどうかの判定
            if [ ${TOF} = "true" ] ; then
                echo ${item}
                tate=$(${IDENTIFY} -format "%h" ${ROOT_PATH}${TEMP_FOLDER}/"${item}")
                yoko=$(${IDENTIFY} -format "%w" ${ROOT_PATH}${TEMP_FOLDER}/"${item}")
                echo -ne "high:${tate} width:${yoko}\n"
    
                # 縦長なら_hight-is-longerディレクトリへ
                # 横長なら_width_is_longerディレクトリへファイルを移動させる
                if [ ${tate} -ge ${yoko} ]; then
                    echo "Vertical picture"
                    mv -vvv ${ROOT_PATH}${TEMP_FOLDER}/"${item}" ${ROOT_PATH}${HEIGHT}/
                else
                    echo "Horizontal picture"
                    mv -vvv ${ROOT_PATH}${TEMP_FOLDER}/"${item}" ${ROOT_PATH}${WIDTH}/
                fi
                echo -e "---\n"
            else
                echo "${item} is not picture"
            fi
        done
    else
        echo "No pictures"
    fi
    

    도전


  • 자신이 준비한 작업 대상의 이미지가 공백을 포함하고 있기 때문에 잘 움직이지 않았다.
    → 쉘 스크립트 내에서 이름을 바꾸려고 시도하는 것은 좋지 않으며, 그냥 일괄 처리로 처리합니다.
  • 위의 이유로, 이 작업도 배치화하면 좋은 느낌이지만, 그것도 생각한 것 같지 않아
  • 좋은 웹페이지 즐겨찾기