私はこれに関するphp apiドキュメントで何か設定を見ることができず、多くを見ることができないのですか?
たとえば、元のファイルのアップロードがpng
の場合、wordpressはjpg
に変換します。
これは私のクライアントが非常に高品質のPNGを使っていたために私が書いたものです。これは元の画像を保存したままで、サムネイルのみを変更することに注意してください。これをあなたのfunctions.phpに加えてください
<?php
//Force PNG Thumbnails into JPGs
add_filter('wp_generate_attachment_metadata','force_png_to_jpg');
function force_png_to_jpg($image_data) {
$sizes = array('thumbnail','medium','large');
$upload_dir = wp_upload_dir();
$file = $upload_dir['path'] . '/' . basename($image_data['file']);
foreach($sizes as $size){
if(isset($image_data['sizes'][$size]))
{
if( $image_data['sizes'][$size]['mime-type'] == "image/png" ){
//change format and filename for jpg
$dest_file = preg_replace('/\.png$/i', '.jpg', $image_data['sizes'][$size]['file']);
$image_data['sizes'][$size]['file'] = $dest_file;
$image_data['sizes'][$size]['mime-type'] = "image/jpg";
//process image into jpg using standard Gd lib
$image = imagecreatefrompng($file);
$bg = imagecreatetruecolor(imagesx($image), imagesy($image));
imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
imagealphablending($bg, TRUE);
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
$bg = imagescale($bg, $image_data['sizes'][$size]['width'], $image_data['sizes'][$size]['height'] );
imagedestroy($image);
//set quality and save
$quality = 80; // 0 = worst / smaller file, 100 = better / bigger file
imagejpeg($bg, $upload_dir['path'] . '/' . $dest_file, $quality);
imagedestroy($bg);
}
}
}
return $image_data;
}
サムネイルは、ファイルのMIMEタイプを使用して保存されます。
あなたはphpの拡張子やライブラリを使ってあなた自身の関数を作成する必要があるでしょう。 WordPressは Gd を使用しますが、うまくいけばこれは3.5で ImageMagick に移植されるでしょう。拡張機能で利用可能なAPIを使用して、画像を変換するためのフックとフィルタを追加できます。良い出発点は、 media_handle_download と media_sideload_image 関数を探すことです。 。