0

どちらかが私の問題を解決できるので、これは少し二部構成です。

指定したサムネイルサイズよりも小さい画像を選択した場合のアイキャッチ画像の拡大

サムネイル サイズが 150x150 の場合に 100x100 の画像など、設定された最小のサムネイル サイズよりも小さいファイルがアップロードされた場合、Wordpress は強制的にサイズを大きくしません。Imagemagick のような外部ソースを使用する以外に、強制的にサイズを大きくする方法はありますか?

すべてのインスタンスでアップロードされた GIF を JPG に変換します

アップサイズを強制する代わりに、アップロードされた GIF ファイルに代わる JPG を作成することもできます。現時点では、サムネイル サイズが 150x150 の場合の 200x200 GIF など、サムネイル サイズよりも大きい GIF では、静的な JPG サムネイルが自動的に生成されます。

プログラムでサムネイルを生成しています:

// Inserts metadata and creates thumbnails for uploaded file
$attach_id = wp_insert_attachment($attachmentMeta, $newFile, $post_id);
$attach_data = wp_generate_attachment_metadata($attach_id, $newFile);
wp_update_attachment_metadata($attach_id, $attach_data);

// Adds the thumbnail to the post
update_post_meta($post_id, '_thumbnail_id', $attach_id);

これらすべてを Imagemagick で行うこともできますが、Wordpress 独自の機能を使用して行うことをお勧めします。どんな助けでも大歓迎です!

4

1 に答える 1

0

Wordpress 3.6 の時点で、ソース画像が小さすぎる場合に要求されたサムネイル サイズに収まるように入力画像を「アップサイズ」する組み込みの方法はないと思います。

ただし、ダウンサイジングは簡単です。この問題の解決策を探している人は、多くのユーザーがこのタイプの問題の適切な解決策として「add_image_size」を提案/混同しているように見えることを知っているかもしれません。それは完全な解決策ではありません。

ソース画像の幅または高さが事前定義されたサムネイル/画像サイズの寸法 (つまり、add_image_size または設定で指定された寸法) より小さい場合、WP はサムネイルの代わりに元のソース画像を返すことに注意することが重要です。 . 明らかに、これはイライラする可能性があります。

他の多くのユーザーは、望ましい結果を得るために CSS のみを使用することを提案しています。たとえば、最小の幅または高さを強制します。CSS は多くの状況で機能しますが、すべての状況で機能するとは限りません。特に流動的またはレスポンシブなレイアウトを扱っている場合はそうです。

以下は、サムネイルを常に目的のサイズに合わせるために使用される、未テストの大まかなフィルターです。これを functions.php にドロップすると、テーマでtimthumb.phpを使用できるようにする必要があります。特定の状況に合わせて変更する必要がある可能性が高く、おそらくいくつかの方法で改善される可能性があります.

function my_image_downsize($src_data, $thumbnail_id, $size) {
    static $omit = false;
    global $_wp_additional_image_sizes;

    if($omit) {
        return $src_data;
    }

    $omit = true;

    $thumbnail_src_data = wp_get_attachment_image_src($thumbnail_id, $size);

    $img_url = $thumbnail_src_data[0];
    $width = $thumbnail_src_data[1];
    $height = $thumbnail_src_data[2];

    if(is_string($size) && isset($_wp_additional_image_sizes[$size]) && ($width < $_wp_additional_image_sizes[$size]['width'] || $height < $_wp_additional_image_sizes[$size]['height'])) {
        // "Upsize" the image as needed, to meet the minimum dimension of the thumbnail.
        $width = $_wp_additional_image_sizes[$size]['width'];
        $height = $_wp_additional_image_sizes[$size]['height'];
        $img_url = get_stylesheet_directory_uri() .'/timthumb.php?src='.$img_url.'&w='.$width.'&h='.$height.'&zc=2&cc=000000'; // TODO: replace timthumb with WP's native media class
    } else {
        $omit = false;
        return $src_data;
    }

    $omit = false;

    return array($img_url, $width, $height);
}
add_filter('image_downsize', 'my_image_downsize', 10, 3);
于 2013-09-05T09:15:10.647 に答える