Sto cercando di trattare un'immagine nello stesso modo in cui si trova in un file di Photoshop: desaturando l'immagine in scala di grigi e quindi applicando una sovrapposizione di colore con una modalità di fusione multipla. A tal fine, sto Styling immagine di sfondo CSS con ...Filtro CSS in scala di grigi e background-blend-mode allo stesso tempo?
.someclass
{
/* grayscale */
-webkit-filter: grayscale(1);
filter: gray;
filter: grayscale(1);
filter: url(desaturate.svg#greyscale);
/* multiply */
background-color: rgba(190, 50, 50, 0.65);
background-blend-mode: multiply;
}
Il problema di questo è che il filtro in scala di grigi finisce desaturando di colore rosso per il metodo di fusione. In altre parole, il moltiplicarsi si verifica prima e poi la scala di grigi. Come si commuta in modo che la scala di grigi sia applicata per prima e quindi la modalità di fusione viene applicata per seconda?
Ho creato un violino (http://jsfiddle.net/g54LcoL1/1/) per il codice e uno screenshot (realizzato in Photoshop) di quello che mi aspetterei che il risultato del violino fosse simile. L'immagine più in basso, div.grayscale.multiply
, dovrebbe essere colorata in rosso.
Questo è impossibile da fare con i CSS per quanto ne so. Questo perché il CSS fa tutte le sue azioni in matrici, quindi viene impostato l'ordine impostato per tutte le proprietà. Le alternative sono per salvare le immagini come scala di grigi prima della mano o magari usare qualcosa come tela per fare una e poi l'altra –
Come "utente" di CSS, mi sembra che il modo in cui ciò dovrebbe accadere sia l'ordine con cui è dichiarato nel codice. Sono sicuro che c'è una ragione per cui è così com'è, ma poiché 'background-blend-mode' diventa più ampiamente supportato, le persone richiederanno un maggiore controllo sull'ordine delle miscele/filtri. Suppongo che 'canvas' sia la strada da percorrere. Darò un colpo. – Jeff
Css è linguaggio bot-up, forse quello era il tuo problema che non so. In ogni caso prova Pleeeease Playground che converte i filtri. – MindlessRanger