본문 바로가기

IT/OS|Network|Script

nconvert를 이용한 한그림파일을 쪼개서 여러 파일로 만들기

728x90

원글(이글루): 2011-06-08 17:53:58

처음 의도는 기타Code표를 각 코드별로 한파일로 쪼개어 놓고 싶어서 였다.
아마 아래를 다른 용도로 사용하려면, 쪼개서 퍼즐 같은 것을 만들때 짤라놓은 이미지로 쓰고 싶을때도 가능하겠다.

1) nconvert 다운로드경로
http://www.xnview.com/en/nconvert.html

2) bash script로 짠 이미지 쪼개기
#!/bin/bash
# 얼마만큼 짜르는가?
let SET_SEP_X=6
let SET_SEP_Y=14
# 전체이미지 괄호세로
let MAX_IMG_X=2337
let MAX_IMG_Y=3846

OUT_DIR_PREFIX="D:\Tmp\5\\"
INPUT_FILE="C:\Tmp\CODE_2.jpg"
# 0: row_col / 1: 위치로
OUT_FILE_TYPE=0
let ADJ_SIZE_X=0
let ADJ_SIZE_Y=0

let CUT_IMG_START_POS_Y=0
let INT_Y=${MAX_IMG_Y}/${SET_SEP_Y}
let INT_X=${MAX_IMG_X}/${SET_SEP_X}
let CUT_NEXT_POS_Y=0
let CUR_SEP_Y=${SET_SEP_Y}-1

while [ ${CUR_SEP_Y} -ge 0 ]
do
  let CUT_NEXT_POS_Y=${MAX_IMG_Y}-${INT_Y}*${CUR_SEP_Y}
  let CUT_NEXT_POS_X=0
        let CUR_SEP_X=${SET_SEP_X}-1
  let CUT_IMG_START_POS_X=0
  while [ ${CUR_SEP_X} -ge 0 ]
  do
    let CUT_NEXT_POS_X=${MAX_IMG_X}-${INT_X}*${CUR_SEP_X}
                if [ ${OUT_FILE_TYPE} -eq 1 ]; then
    OUT_PUT_NAME="${OUT_DIR_PREFIX}${CUT_IMG_START_POS_X}_${CUT_IMG_START_POS_Y}.jpg"
    else
                let CUR_COL=${SET_SEP_Y}-${CUR_SEP_Y}
                let CUR_ROW=${SET_SEP_X}-${CUR_SEP_X}
    OUT_PUT_NAME="${OUT_DIR_PREFIX}${CUR_ROW}_${CUR_COL}.jpg"
    fi
                let GAP_X=${CUT_NEXT_POS_X}-${CUT_IMG_START_POS_X}
    let GAP_Y=${CUT_NEXT_POS_Y}-${CUT_IMG_START_POS_Y}
                let ADJ_POS_Y=${CUT_IMG_START_POS_Y}-${ADJ_SIZE_Y}
                let ADJ_POS_X=${CUT_IMG_START_POS_X}-${ADJ_SIZE_X}
    if [ ${ADJ_POS_X} -lt 0 ]; then
      let ADJ_POS_X=0
    fi
    if [ ${ADJ_POS_Y} -lt 0 ]; then
      let ADJ_POS_Y=0
    fi
    echo "nconvert -npcd 2 -ctype grey -corder inter -out jpeg -o ${OUT_PUT_NAME} -crop ${ADJ_POS_X} ${ADJ_POS_Y} ${GAP_X} ${GAP_Y} \"${INPUT_FILE}\""
    let CUT_IMG_START_POS_X=${CUT_NEXT_POS_X}
    let CUR_SEP_X=${CUR_SEP_X}-1
  done
  let CUT_IMG_START_POS_Y=${CUT_NEXT_POS_Y}
  let CUR_SEP_Y=${CUR_SEP_Y}-1
done

728x90