画像アップロード用コンポーネントの改造

プロフィール画像はサムネイルサイズに無理やり正方形にしてやればよかったんですが、既存システムでは「短い辺を指定サイズに縮小させて中央から正方形に切り取るサムネイル」「長辺を指定サイズになるように縮小させる通常ファイル」の二種類を作っていますので、そういう対応ができるようにしてみます。サムネイルを並べる場合はその方が統一感が出てキレイなんですよね。

  if(!isset($image)){ $image = $_FILES['image']['tmp_name']; }

  if (file_exists($image)){

    //ファイル名生成
    $img_name = md5($filename.$ip_address.$date);

    //出力先設定
    $dstfile = CMT_DATA_DIR.'/'.$img_name.'.tmp';
    $outfile = CMT_DATA_DIR.'/'.$img_name.'_m.jpg';
    $thumbfile = CMT_DATA_DIR.'/'.$img_name.'_s.jpg';

    $imageinfo = getimagesize($image); //画像情報を取得

    if (!move_uploaded_file($image, $dstfile)) {
        die('ファイルアップロードに失敗しました');
    }
    $im_in = ImageCreateFromJPEG($dstfile);
    //アップロード画像サイズ適正化
    if ($imageinfo[0] > $imageinfo[1]){
	    $out_w = UPIMAGE_WIDTH;
	    $out_h = UPIMAGE_WIDTH/$imageinfo[0]*$imageinfo[1];
    }else{
	    $out_w = UPIMAGE_WIDTH/$imageinfo[1]*$imageinfo[0];
	    $out_h = UPIMAGE_WIDTH;
    }
    //既に希望のサイズになっている場合は修正しない
    if ($imageinfo[0] == $out_w){
        ImageJPEG($im_in,$outfile);
    }else{
        $im_out = ImageCreateTrueColor($out_w,$out_h);
        ImageCopyResampled($im_out,$im_in,0,0,0,0,$out_w,$out_h,$imageinfo[0],$imageinfo[1]);
        ImageJPEG($im_out,$outfile);
    }
    //サムネイル作成
    if ($imageinfo[0] > $imageinfo[1]){
	$out_w = CMT_WIDTH;
	$out_h = CMT_WIDTH/$imageinfo[0]*$imageinfo[1];
    }else{
	$out_w = CMT_WIDTH/$imageinfo[1]*$imageinfo[0];
	$out_h = CMT_WIDTH;
    }
    $im_out = ImageCreateTrueColor($out_w,$out_h);
    ImageCopyResampled($im_out,$im_in,0,0,0,0,$out_w,$out_h,$imageinfo[0],$imageinfo[1]);
    ImageJPEG($im_out,$thumbfile);
    //イメージ開放
    ImageDestroy($im_in);
    ImageDestroy($im_out);
    unlink($dstfile);
  }

こんな感じで。