カスタム画像サイズ/サムネイル-ソース画像が設定されたサイズよりも小さい場合でもアスペクト比にトリミング


11

通常、ハードクロップを使用してカスタム画像サイズを設定すると、たとえばadd_image_size( 'custom-size', 400, 400, true );、次の結果が得られます。

  • #1アップロードされた画像:600x500>サムネイル:400x400。
  • #2アップロードした画像:500x300>サムネイル:400x300。
  • #3アップロードされた画像:300x200>サムネイル:300x200。

しかし、私がしたいのは、アップロードされた画像がカスタム画像サイズの設定された幅または高さ、あるいはその両方よりも小さい場合です。これらの次元内-次のように、アスペクト比(この場合は1:1)に合わせてトリミングされます。

  • #1アップロードされた画像:600x500>サムネイル:400x400。
  • #2アップロードされた画像:500x300>サムネイル:300×300
  • #3アップロードされた画像:300x200>サムネイル:200×200

これは標準のadd_image_sizeオプションを使用して可能であるとは思わないが、別の関数、またはadd_image_size関数を変更するフックを使用して可能ですか?

または、この機能を追加するプラグインはありますか?

どなたでもご提供いただける情報をいただければ幸いです。


私の質問をさらに明確にするため。add_image_size上記で説明したように構成できるようにしたいと思います。標準のパラメーターを使用してこれを行うことは不可能だとかなり確信していますが、フック、アクション、またはフィルターを使用してそれが可能であることを望んでいます。
Joey Joe Joe Junior Shabadoo

回答:


2

それはそのように機能しないだけです。

逆にあなたの質問を考えるのがよければ、画像サイズとレスポンシブ画像の選択を使用して、最新のブラウザーで正しい結果を得ることができます。

このようなコードを使用する場合:

add_image_size( 'custom-size-small', 200, 200, true );
add_image_size( 'custom-size-medium', 300, 300, true );
add_image_size( 'custom-size-large', 400, 400, true );

...そしてあなたのテンプレートでは次のようなものです:

wp_get_attachment_image( $image_ID, 'custom-size-small' )

...そしてデフォルト(WP 4.4以降)では、セットの最小バージョンsrcsrcset属性のサイズが大きいイメージタグが取得されます。新しいブラウザは、適切な最大バージョンから選択して表示します。

そのため、特定の画像に大きなバージョンがなくても問題ありません。作成され300x200200x200バージョンを持つ画像は、そのバージョンがHTMLで唯一のものであり、すべてのブラウザで表示されます。

レスポンシブ画像を微調整しながらこれを解決したので、のみをサポートしsrc、サポートしていないブラウザで良好なパフォーマンスが得られましたsrcset


返信いただきありがとうございます。これは興味深い解決策ですが、残念ながら自分の状況でうまくいくとは思いません。画像はエンドユーザーによってアップロードされます。サイズは任意です。このソリューションは、誤解しない限り、アップロードされた画像のサイズが固定されている場合にのみ機能します。たとえば、上記のコードは500x200の画像では機能しますが、500x199の画像では機能しません。
Joey Joe Joe Junior Shabadoo

2

それは、新しいCSSのソリューションだとそれだけで働いているので、これは本当に良い解決策ではありませんユーザーのブラウザの78.9パーセントが、それを克服することができますいくつかのpolyfillsがあるオブジェクトフィット-画像fitieは、

img {
    display: block;
    overflow: hidden;
    width: 400px;
    height: 400px;
    -o-object-fit: cover;
       object-fit: cover;
}

理想的には、アップロード時に小さな画像がそれに比例して拡大縮小された方が良いでしょうが、その解決策を見つけることができませんでした。


返信いただきありがとうございます。私はこのプロパティにさえ気づいていませんでしたが、ええ、あなたが言ったように、ブラウザのサポートの欠如はそれをうまくやらせません。おそらく今から数年後でしょう。
Joey Joe Joe Junior Shabadoo

私は実際に「object-fit-images」ポリフィルを使い始めたばかりで、Joeyで動作するようですが、Macしか持っていないため、まだIEでテストしていません。ここでそれは実際に動作していますが、見たい場合は。そのページのグリッドサムネイルで使用されています。私はこの問題を解決するプラグインがそこになければならないことを知っています。ただし、これまでのところ、YoImagesは、オブジェクトフィットに付随する適切なアドオンであり、トリミング位置を各画像の任意の位置に変更できます。
ブライアンウィリス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.