mediaプラグイン応用(8) VersionファイルのmimeTypeを任意で出力

Mediaプラグインの「Versionファイル機能」で出力される縮小画像の、ファイルタイプを任意に選べる改修を追加しました。


注:この記事は、Viewで呼び出し時にVersionファイルを作成する 改修済みのソースをベースに記載しています。

mimeTypeの設定

VersionファイルのmimeTypeを変更するには、convert設定を適宜変更します。

Configure::write('Media.filter.image', array(
-	'xxs' => array('convert' => 'image/png', 'fitCrop' => array(16, 16)),
+	'xxs' => array('convert' => 'image/jpeg', 'fitCrop' => array(16, 16)),

core.phpやbootstra.phpで設定すると、全ての画像のxxsサイズ縮小ファイルが jpg 固定になります。


mimtType適宜指定したい場合は、例えば以下の様に改修します(引用ソースの委細は こちら 参照)

  1. Versionファイル出力時、$options['mimeType']の指定がある場合、convert設定を$options['mimeType']で上書き。

app/plugins/media/libs/upfile.php(Versionファイル出力ライブラリ)

/* Versionファイルの個別作成 */
function make_version($path, $orig_filepath, $options=array())
{
(中略)
    // Confirgureの設定
    $name = Medium::name($orig_filepath);
    $filters = Configure::read('Media.filter.'. strtolower($name));
    if (!isset($filters[$dir])) {
        return false;
    }
-    Configure::write('Media.filter.'. strtolower($name), array($dir => $filters[$dir]));
+    $filter[$dir] = $filters[$dir];
+    // mimeType設定
+    if (isset($options['mime_type']) && !empty($options['mime_type'])) {
+        $filter[$dir]['convert'] = $options['mime_type'];
+      }
+      Configure::write('Media.filter.'. strtolower($name), array($dir => $filter[$dir]));

    // Versionファイル出力
    $Media->setup($Model);
    $result = $Media->make($Model, $orig_filepath);
  1. 上記関数を呼び出す箇所で、適宜$options['mime_type']を設定。

app/plugins/media/views/elements/medium_edit.ctp(改修Attachmentエレメント)

$file = $upfile->file(
    'filter/'.$previewVersion,
    $item,
    array(
        'model_name' => $model,
+        'mime_type' => 'image/jpeg',
    )
);