#!/bin/bash

# 이미지가 저장된 폴더 경로를 입력하세요.
DIRECTORY_PATH="./userProfile"

# 폴더 존재 여부 확인
if [ ! -d "$DIRECTORY_PATH" ]; then
  echo "지정된 폴더가 존재하지 않습니다."
  exit 1
fi

# 폴더 내 모든 jpg 파일을 찾아 배열에 저장
mapfile -t jpg_files < <(find "$DIRECTORY_PATH" -type f -name "*.jpg")

# 배열에 파일이 없다면 스크립트 종료
if [ ${#jpg_files[@]} -eq 0 ]; then
  echo "폴더 내에 JPG 파일이 없습니다."
  exit 1
fi

all_folder_files=${#jpg_files[@]}
echo "Processing all folder file count : $all_folder_files"
start_index=0

# 처리할 파일의 개수
num_files=3687

# 슬라이싱을 사용해 특정 범위의 파일만 선택
selected_files=("${jpg_files[@]:$start_index:$num_files}")

total_files=${#selected_files[@]}
counter=0
# 배열에 저장된 각 jpg 파일에 대하여 처리
for img in "${selected_files[@]}"; do
  # 파일이 유효한 JPG 파일인지 확인
  file "$img" | grep -qE 'JPEG image data'
  if [ $? -ne 0 ]; then
    echo "Invalid or unsupported file format: $img. Skipping..."
    continue
  fi
    
  # 이미지의 가로 크기를 얻습니다.
  width=$(identify -format "%w" "$img")

  # identify 결과가 비어 있는 경우 스킵
  if [ -z "$width" ]; then
    echo "Unable to get width for image: $img. Skipping..."
    continue
  fi
  
  counter=$((counter + 1))

  # 현재 진행 상황 표시 (퍼센트 또는 파일 번호)
  percent=$(( (counter * 100) / total_files ))
  echo "Processing file $counter of $total_files ($percent% complete): $img $width"

  # 가로 크기가 1920 이상인 경우 이미지 크기를 30%로 줄입니다.
  if [ "$width" -ge 3640 ]; then
    mogrify -resize 50% "$img"
  elif [ "$width" -ge 1950 ]; then
    mogrify -resize 75% "$img"
  fi
done