Mediapluginで、以下の2点を実施してみたかったんだけど、いい方法がなかったので仕方なくプログラムを修正してみました。
もっと簡単な方法があれば教えてください。

やりたかったのは下記の2点です。
1. 画像ファイルをアップロードしたとき pngならばpngで、jpgならばjpgで、gifならgifで保管する。
2. モデル毎に、画像サイズを変更する。


設定は下記の通り。

1. app/config/bootstrap.php
Media.filter.imageのconvertを削除する。
修正前)
Configure::write('Media.filter.image',array(
'xs' => array('convert' => 'image/png', 'fit' => array(450, 450)),
'm' => array('convert' => 'image/png', 'fit' => array(300, 300)),
's' => array('convert' => 'image/png', 'fit' => array(150, 150)),
);

修正後)
Configure::write('Media.filter.image',array(
'xs' => array('fit' => array(450, 450)),
'm' => array('fit' => array(300, 300)),
's' => array('fit' => array(150, 150)),
);

2.Attachmentsクラス$actsAsの'Media.Media'にcreateVersionsのパラメータを追加。
createVersionsに、サムネイルを作成したいバージョンを記載する。

例) 1のうち、450x450と150x150ピクセルに収まる画像ファイルをアップロードしたい場合。

'Media.Media' => array(
'metadataLevel' => 2,
'makeVersions' => true,
'filterDirectory' => MEDIA_FILTER,
'createVersions' => array('s','xs'),
)


3.修正したMediaBehaviorクラスのmakeメソッドを下記のように変更する(青字部分追加)。

function make(&$Model, $file, $overwrite = false) {
extract($this->settings[$Model->alias]);

list($file, $relativeFile) = $this->_file($Model, $file);

$relativeDirectory = DS . rtrim(dirname($relativeFile), '.');

$name = Medium::name($file);

// 元のファイルタイプ別に設定を行うために、元のファイルのmimeTypeを取得する。
$File = new File($file);
$mimeType = MimeType::guessType($File->pwd());


$filter = Configure::read('Media.filter.' . strtolower($name));

// 指定したバージョンのみ選択させる。
$versionLists = !empty($createVersions) ? $createVersions : array_keys($filter);
$versionLists = is_array($versionLists) ? $versionLists : array($versionLists);

$hasCallback = method_exists($Model, 'beforeMake');

foreach ($versionLists as $version) {
// Version情報を取り出す。
if( ! isset($filter[$version])){
trigger_error("MediaBehavior::make - Unkown Version `{$version}`. Please check versions.",E_USER_WARNING);
continue;
}

$instructions = $filter[$version];

// convertの設定がなければ、現在のファイルのmime-typeを使用する。
if(! array_key_exists('convert',$instructions) ){
$instructions = array('convert' => $mimeType) + $instructions;
}

$directory = Folder::slashTerm($filterDirectory . $version . $relativeDirectory);
$Folder = new Folder($directory, $createDirectory);

if (!$Folder->pwd()) {
$message = "MediaBehavior::make - Directory `{$directory}` ";
$message .= "could not be created or is not writable. ";
$message .= "Please check the permissions.";
trigger_error($message, E_USER_WARNING);
continue;
}
if ($hasCallback) {
$process = compact('overwrite', 'directory', 'name', 'version', 'instructions');
if ($Model->beforeMake($file, $process)) {
continue;
}
}


if (!$Medium = Medium::make($file, $instructions)) {
$message = "MediaBehavior::make - Failed to make version `{$version}` ";
$message .= "of file `{$file}`. ";
trigger_error($message, E_USER_WARNING);
continue;
}
$file = $Medium->store($directory . basename($file), $overwrite);
}
return true;
}