// info  nam="SAMPLE05A"  tit="画像縮小"  dsc="JPEG画像の一括縮小コピー"  pro=2

typedef struct {
  char  idir[512];
  char  odir[512];
  char  ffmt[64];
  UINT  ibgn;
  UINT  iend;
  REAL  rscl;
} INPDAT;
 
void CommandMain(HWND hwnd)
{ // 画像縮小
  int i, w, h, re, cn = 0;
  HBUF rb;
  HDIB bm;
  SIZE siz;
  char nam[64], cur[512];
  static INPDAT dat;
  static COLI ci[6] = {
    { STR(512), 48, "idir", "入力フォルダ名", },
    { STR(512), 48, "odir", "出力フォルダ名", },
    { STR(64),  24, "ffmt", "書式文字列", },
    { TID_U4B,   6, "ibgn", "開始番号", },
    { TID_U4B,   6, "iend", "終了番号", },
    { TID_F8B,   6, "rscl", "画像縮小倍率", },
  };
  static COLS cs = { ci, NELEM(ci) };
  static TBLI ti = { &cs, };

  strcpy(dat.idir, "C:\\Users\\S.Sorimachi\\Pictures\\DCIM\\117NIKON\\");
  strcpy(dat.odir, "C:\\Users\\S.Sorimachi\\Pictures\\TEST\\OUT03\\");
  strcpy(dat.ffmt, "DSCN%04d.JPG");
  dat.ibgn = 4635;
  dat.iend = 4636;
  dat.rscl = 0.15;
  rb = CreateRowBufX(&dat, &ti);
  re = EditRowDlgBox(hwnd, rb, "画像縮小");
  DeleteRowBuf(rb);
  if (!re) return;
  BusyMsg(hwnd, "処理中...");
  get_working_path(cur, sizeof(cur));
  set_working_path(dat.idir);
  for (i = dat.ibgn; i <= dat.iend; i++) {
    sprintf(nam, dat.ffmt, i);
    if (file_exists(nam)) {
      bm = LoadJPG(NULL, nam); if (!bm) break;
      StatMsg(hwnd, format("処理中  %d", i));
      GetDIBSize(&siz, bm);
      w = iround(dat.rscl * siz.cx); if (w < 1) w = 1;
      h = iround(dat.rscl * siz.cy); if (h < 1) h = 1;
      ResizeDIBX(bm, w, h, DIB_MEA);
      set_working_path(dat.odir);
      if (SaveJPG(bm, nam)) cn++;
      DeleteDIB(bm);
      set_working_path(dat.idir);
    }
  }
  set_working_path(cur);
  EndBusy(hwnd);
  OkBox(hwnd, format("%d 個のファイルを縮小しました。", cn), NULL);
}
