<?php
include('common.php');

$EXT      = 'jpg';
$SIZE     = 30;
$MINI_DIR     = dirname(__FILE__) .'/pic_mini';
$SPLIT_DIR    = dirname(__FILE__) .'/pic_split';
$RESULT_DIR   = dirname(__FILE__) .'/pic_result';
$ORG_IMG_PATH = dirname(__FILE__) .'/original.jpg';

$conv         = new ImageConverter();
$size         = $conv->getImageSize($ORG_IMG_PATH);
$w_num        = intval($size[0] / $SIZE);
$h_num        = intval($size[1] / $SIZE);

//幅、高さとも$SIZEピクセルの倍数になるように切り出す。
$conv->cropImage(
  $ORG_IMG_PATH,
  dirname($ORG_IMG_PATH) .'/original_new.jpg',
  $SIZE * $w_num,
  $SIZE * $h_num
);

//元画像を、$SIZEピクセル四方に分割
$ORG_IMG_PATH = dirname($ORG_IMG_PATH) .'/original_new.jpg';
$conv->splitImage($ORG_IMG_PATH, $SPLIT_DIR, $SIZE, $SIZE);


//予め用意しておいたミニ画像のデータを用意
$mini_path_list = getPicPathList($MINI_DIR, $EXT);

foreach ($mini_path_list as $path) {
  $img = new Image($path);
  $img->createHistgram();

  $mini_img_list[$path] = $img;
}

//分割した元画像リスト
$org_path_list = getPicPathList($SPLIT_DIR, $EXT);

$resemble_pic_list = array();

//分割した各元画像ごとに、一番よく似ているミニ画像を探す。
foreach ($org_path_list as $path) {
  $org_img = new Image($path);
  $org_img->createHistgram();
  $resemble_pic_path = null;
  $resemble_value = 0;

  foreach ($mini_img_list as $mini_path => $mini_img) {
    if (is_null($resemble_pic_path)) {
      $resemble_pic_path = $mini_path;
    }
    $tmp = $org_img->getResebleValue($mini_img);

    if ($tmp > $resemble_value) {
      $resemble_value = $tmp;
      $resemble_pic_list[$path]['resemble_path']  = $mini_path;
      $resemble_pic_list[$path]['resemble_value'] = $tmp;
    }
    unset($tmp);
  }
  copy($resemble_pic_list[$path]['resemble_path'], $RESULT_DIR .'/'. basename($path));
  echo "{$path} finish!\n";
}

//ミニ画像をつなげて、コラージュ写真を作る。
$collage_img = imagecreatetruecolor(intval($size[0] / $SIZE) * $SIZE, intval($size[1] / $SIZE) * $SIZE);

for ($i = 0; $i < $w_num; $i++) {
  for ($j = 0; $j < $h_num; $j++) {
    $part_path = $RESULT_DIR .'/'. sprintf('%s_%s.jpg', $i, $j);
    $part_img = imagecreatefromjpeg($part_path);
    $x = $i * $SIZE;
    $y = $j * $SIZE;
    imagecopy($collage_img, $part_img, $x, $y, 0, 0, $SIZE, $SIZE);
  }
}

imagejpeg($collage_img, dirname(__FILE__) .'/original_collage.jpg', 100);
