/** * サムネイル画像作成 * * @param $target_file サムネイル作成元 画像ファイルパス * @param $save_mode 保存するモード ('PROFILE' or 'DIARY' or 'BBS' or 'FOLDER') */ function make_thumbnail($target_file, $save_mode) { // システム設定グループ名 //$system_config_group = '画像ファイル'; $system_config_group = ACSMsg::get_mst('system_config_group', 'D04'); // 画像サイズを取得 $default_width_max = ""; $default_height_max = ""; $thumb_width_max = ""; $thumb_height_max = ""; $rss_width_max = ""; $rss_height_max = ""; switch ($save_mode) { case 'PROFILE': $default_width_max = ACSSystemConfig::get_keyword_value($system_config_group, 'PROFILE_IMAGE_WIDTH_MAX'); $default_height_max = ACSSystemConfig::get_keyword_value($system_config_group, 'PROFILE_IMAGE_HEIGHT_MAX'); $thumb_width_max = ACSSystemConfig::get_keyword_value($system_config_group, 'PROFILE_IMAGE_THUMB_WIDTH_MAX'); $thumb_height_max = ACSSystemConfig::get_keyword_value($system_config_group, 'PROFILE_IMAGE_THUMB_HEIGHT_MAX'); break; case 'DIARY': $default_width_max = ACSSystemConfig::get_keyword_value($system_config_group, 'DIARY_IMAGE_WIDTH_MAX'); $default_height_max = ACSSystemConfig::get_keyword_value($system_config_group, 'DIARY_IMAGE_HEIGHT_MAX'); $thumb_width_max = ACSSystemConfig::get_keyword_value($system_config_group, 'DIARY_IMAGE_THUMB_WIDTH_MAX'); $thumb_height_max = ACSSystemConfig::get_keyword_value($system_config_group, 'DIARY_IMAGE_THUMB_HEIGHT_MAX'); break; case 'BBS': $default_width_max = ACSSystemConfig::get_keyword_value($system_config_group, 'BBS_IMAGE_WIDTH_MAX'); $default_height_max = ACSSystemConfig::get_keyword_value($system_config_group, 'BBS_IMAGE_HEIGHT_MAX'); $thumb_width_max = ACSSystemConfig::get_keyword_value($system_config_group, 'BBS_IMAGE_THUMB_WIDTH_MAX'); $thumb_height_max = ACSSystemConfig::get_keyword_value($system_config_group, 'BBS_IMAGE_THUMB_HEIGHT_MAX'); $rss_width_max = ACSSystemConfig::get_keyword_value($system_config_group, 'BBS_IMAGE_RSS_WIDTH_MAX'); $rss_height_max = ACSSystemConfig::get_keyword_value($system_config_group, 'BBS_IMAGE_RSS_HEIGHT_MAX'); break; case 'FOLDER': $thumb_width_max = ACSSystemConfig::get_keyword_value($system_config_group, 'FOLDER_IMAGE_THUMB_WIDTH_MAX'); $thumb_height_max = ACSSystemConfig::get_keyword_value($system_config_group, 'FOLDER_IMAGE_THUMB_HEIGHT_MAX'); break; default: return false; } // サムネイル画像作成 // ImageMagick $image_obj = new ACSImageMagickWrapper($target_file); if (!$image_obj) { return false; } // 最大サイズより大きい場合は縮小する // フォルダの場合は制限なし if ($save_mode != 'FOLDER') { $new_image_name = $image_obj->reduce_image($default_width_max, $default_height_max); } // サムネイル作成 $new_thumb_name = $image_obj->make_jpg_thumbnail(ACS_FOLDER_DIR . $this->get_thumbnail_server_file_name(), $thumb_width_max, $thumb_height_max); // RSS フィード用 // BBS の場合は、RSS用ファイルを作成 if ($save_mode == 'BBS') { $rss_server_file_name = $this->get_rss_save_file_name($this->get_owner_community_id(), $this->get_file_id()); $new_thumb_name = $image_obj->make_jpg_thumbnail(ACS_FOLDER_DIR . $rss_server_file_name, $rss_width_max, $rss_height_max); $this->set_rss_server_file_name($rss_server_file_name); } return true; }
/** * 指定サイズ以下のサイズに縮小する * * @param $max_width 最大横幅 * @param $max_height 最大縦幅 */ function reduce_image($max_width = ACS_THUMBNAIL_WIDTH, $max_height = ACS_THUMBNAIL_HEIGHT) { if ($this->width > $max_width || $this->height > $max_height) { ACSImageMagickWrapper::convert($this->file_name, '', $max_width, $max_height); } }