WordPressインストールでアップロードされたすべての画像にグレースケールフィルターを使用しています。しかし、私は自分のウェブサイトにグレースケールの画像とカラー画像(ホバーで色付け)の両方を必要としています。私がこれを試みた方法は、次のようなadd_image_size()の束を作成することでした:
add_image_size( 'gho-small', 100, 0, true ); // Used for small images
add_image_size( 'gho-small-grayscale', 100, 0, true ); // Used for small grayscaled images
add_image_size( 'gho-medium', 200, 0, true ); // Used for medium images
add_image_size( 'gho-medium-grayscale', 200, 0, true ); // Used for medium grayscaled images
add_image_size( 'gho-large', 400, 0, true ); // Used for large images
add_image_size( 'gho-large-grayscale', 400, 0, true ); // Used for large grayscaled images
次に、画像にフィルターを適用し、*グレースケールIDのみを取得して保存します。
add_filter('wp_generate_attachment_metadata','gholumns_grayscale_filter');
function gholumns_grayscale_filter($meta)
{
$dir = wp_upload_dir();
$file = trailingslashit($dir['path']).$meta['sizes']['gho-large-grayscale']['file'];
do_grayscale_filter($file);
return $meta;
}
これは問題なく機能しますが、明らかにadd_image_size()は幅と高さの引数を調べ、その組み合わせでサイズがすでに定義されている場合、サイズは追加されません。その機能は新しいサイズを追加することであり、サイズが重複している場合は通常、処理時間を節約するために再度追加しない方がよいことは理解できます。しかし、今は同じサイズの2つの画像が必要ですが、1つはフィルターが適用され、もう1つはオリジナルです。
どうすればこれを達成できますか?
次のように、1ピクセルだけ広い別のサイズを追加しようとしました。
add_image_size( 'gho-small-grayscale', 101, 0, true ); // Used for small grayscaled images
そして、フィルターの後で画像のサイズを変更して、100/200/400
何にでも戻します。しかし、それは正しくないget_the_post_thumbnail()
と思い101x$height
ます。また、画像の寸法はだと思っているので、呼び出しをめちゃくちゃにします。また> 1px
、幅+ 1pxの場合、比率によって高さが高くなる可能性があるため、画像を水平および垂直に1ピクセルずつサイズ変更するほど簡単ではありません。