Dimensione / miniatura dell'immagine personalizzata - Ritaglia per proporzioni anche quando l'immagine di origine è più piccola delle dimensioni impostate


11

Normalmente quando si imposta una dimensione dell'immagine personalizzata usando il ritaglio duro, ad esempio add_image_size( 'custom-size', 400, 400, true );, si ottengono i seguenti risultati:

  • # 1 Immagine caricata: 600x500> Miniatura: 400x400.
  • # 2 Immagine caricata: 500x300> Miniatura: 400x300.
  • # 3 Immagine caricata: 300x200> Miniatura: 300x200.

Tuttavia, ciò che mi piacerebbe fare è quando l'immagine caricata è più piccola della larghezza impostata, dell'altezza o di entrambe, della dimensione dell'immagine personalizzata, ad esempio esempi n. 2 e n. 3 precedenti, invece di ritagliare l'immagine per adattarla all'interno di quelle dimensioni - è anche ritagliato per adattarsi alle proporzioni (che in questo caso è 1: 1) in questo modo:

  • # 1 Immagine caricata: 600x500> Miniatura: 400x400.
  • # 2 Immagine caricata: 500x300> Miniatura: 300x300 .
  • # 3 Immagine caricata: 300x200> Miniatura: 200x200 .

Non credo che ciò sia possibile utilizzando le opzioni standard add_image_size, ma è possibile utilizzare una funzione diversa o un hook che modifica la funzione add_image_size?

O c'è un plugin che aggiunge questa funzionalità?

Qualsiasi informazione che chiunque può fornire sarebbe molto apprezzata.


Per chiarire ulteriormente la mia domanda. Mi piacerebbe essere in grado di configurare add_image_sizeper fare ciò che ho descritto sopra. Sono abbastanza sicuro che questo non sia possibile utilizzando i parametri standard, ma spero che sia possibile utilizzare un hook, un'azione o un filtro.
Joey Joe Joe Junior Shabadoo,

Risposte:


2

Hai ragione che non funziona così.

Se va bene pensare alla tua domanda al contrario, puoi ottenere il risultato giusto nei browser moderni usando una selezione di dimensioni e immagini reattive.

Se usi un codice come questo:

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 );

... e nei tuoi modelli qualcosa come:

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

... quindi per impostazione predefinita (WP 4.4 e versioni successive) otterrai un tag immagine con la versione più piccola del tuo set come le srcdimensioni più grandi srcsetdell'attributo, che i browser più recenti sceglieranno e visualizzeranno la versione più grande appropriata.

Quindi, se un'immagine particolare non ha una versione più grande, non importa. Un'immagine che 300x200avrà una 200x200versione fatta, quella versione sarà l'unica in HTML e tutti i browser lo mostreranno.

Ho risolto il problema modificando le immagini reattive in modo da ottenere buone prestazioni su browser che supportano srce non solo srcset.


Grazie per la risposta. Questa è una soluzione interessante, ma sfortunatamente non penso che funzionerebbe per la mia situazione. Le immagini verrebbero caricate dall'utente finale e potrebbero essere di qualsiasi dimensione. Questa soluzione, a meno che non lo fraintenda, funziona solo se le immagini caricate sono un set fisso di dimensioni. Ad esempio, il codice sopra funzionerebbe per un'immagine che era 500x200, ma non per un'immagine che era 500x199.
Joey Joe Joe Junior Shabadoo,

2

Questa non è davvero una buona soluzione poiché è una soluzione CSS più recente e funziona solo nel 78,9% dei browser degli utenti , ma ci sono alcuni polyfill che possono superare quelle immagini e adattamenti di oggetti

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

Idealmente sarebbe meglio se le immagini più piccole fossero ridimensionate proporzionalmente al caricamento, ma non sono stato in grado di trovare una soluzione per questo.


Grazie per la risposta. Non ero nemmeno a conoscenza di questa proprietà, ma sì, come hai detto, la mancanza del supporto del browser lo rende inutile. Forse tra qualche anno forse.
Joey Joe Joe Junior Shabadoo,

In realtà ho appena iniziato a usare il polyfill "object-fit-images" e mentre sembra funzionare Joey, non ho ancora testato su IE da quando ho solo Mac. Qui è in azione se vuoi dare un'occhiata . Viene utilizzato nelle miniature della griglia in quella pagina. So che deve esserci un plugin là fuori che risolve questo problema. Tuttavia, finora YoImages è un buon componente aggiuntivo che accompagna l'adattamento dell'oggetto in quanto consente di modificare la posizione di ritaglio in qualsiasi posizione per ogni immagine.
Bryan Willis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.