Tornar uma imagem dessaturada transparente, mantendo apenas sombras e realces

17

Estou tentando fazer isso há alguns dias e não obtive os resultados necessários. Não sei se estou usando a terminologia correta no título; se não, sinta-se à vontade para me corrigir e atualizá-la.

Eu quero ir disso: insira a descrição da imagem aqui

para isso (eu amostramos uma área da transparência para mostrar o valor k, caso isso ajude). Observe que as sombras / destaques estão lá, mas nada mais: imagem de resultado

Isso permite que eu coloque uma camada preenchida com uma cor sólida abaixo da imagem transparente. O resultado é uma camisa de cor diferente e sombras / destaques são vistos:

camada preenchida com azul colocada abaixo da camada transparente da camisa insira a descrição da imagem aqui

camada preenchida com preto, colocada abaixo da camada transparente da camisa insira a descrição da imagem aqui

Alguém tem alguma idéia de como eu posso conseguir isso? Consegui chegar perto do resultado, mas minha transparência não é suficiente ou é demais. Perco grande parte dos detalhes da sombra / destaque. A imagem inicial é do tipo de arquivo JPG.

ATUALIZAR:

Preciso que o resultado final seja um PNG como este: insira a descrição da imagem aqui

Este PNG parece ter um fundo branco, mas, ao levá-lo para o Photoshop ou GIMP, você verá que a camiseta é transparente. Preciso fazer engenharia reversa de como isso foi feito, para que possa ser feito com outras peças de roupa.

O que é interessante sobre o PNG acima é que as sombras, destaques e tons médios na parte transparente da imagem podem ser selecionados individualmente. Photoshop: Selecione-> Faixa de cores-> Sombras, Destaques ou Meio-tons. Imagem abaixo para mostrar o que quero dizer: insira a descrição da imagem aqui

aMMT
fonte
2
Por que não fazer uma mistura de camadas com o modo Multiply? Parece que sua forma tem bordas bem definidas, para que você possa mascará-la com muita facilidade.
Ckpepper02
1
Porque o OP deseja exportar a imagem como um PNG transparente. A multiplicação depende de uma cor para estar por trás dela.
21713 Hanna
Multiply + mask é o caminho a seguir.
John
Você poderia expandir isso, John?
21713 Hanna

Respostas:

13

Ao atribuir branco como canal alfa para transparência, não seremos capazes de destacar destaques opacos, pois esses por definição serão brancos, portanto totalmente transparentes.

Para ter um canal alfa poupando áreas brancas realçadas e sombras negras, é melhor escolher uma cor cinza para atribuir alfa.

  • Para mostrar o efeito com mais clareza, primeiro tornei sua imagem original mais escura e aumentou o contraste. Você precisará de ambos, ajustar o contraste da fonte e escolher um nível de cinza que melhor se adapte às suas necessidades para obter melhores resultados.

  • Em seguida, atribui um canal alfa a uma cor 'cinza' (em vez de branca):

    insira a descrição da imagem aqui

Agora, quando sobrepomos esta imagem com, por exemplo, um fundo verde, podemos ver que os realces e as sombras são mantidos.

insira a descrição da imagem aqui

Podemos ver que, quando usadas em cores escuras, as áreas brancas da imagem original ainda podem estar muito claras para o efeito desejado. Isso pode ser superado quando escolhemos uma fonte cinza em vez de uma branca para criar nosso modelo de canal alfa.

Abaixo (canto superior esquerdo), usei um preenchimento de balde cinza com 20% de opacidade no original branco. Depois de atribuir um canal alfa de transparência a cinza (canto superior direito), podemos sobrepor um fundo colorido (preto esquerdo, vermelho escuro médio, branco marfim direito) para obter os efeitos finais.

insira a descrição da imagem aqui

Takkat
fonte
Eu sou um novato nisso e estou tendo problemas com o canal alfa. Meu método de obter o efeito de transparência até agora foi acessar a guia de canais e controlar + clicar no canal RGB. Eu uso uma máscara rápida e ajusto os níveis, mas não consigo chegar onde você está na primeira imagem que postou. Como você está atribuindo um canal alfa ao cinza?
AMMT
@ Pheticetic: Eu fiz isso rapidamente com o Gimp (existe uma entrada no menu para selecionar qualquer cor para transparência). Isso me faz acreditar que existe (ou deveria) também existir essa opção no PS ou em qualquer aplicativo que você usar. Uma abordagem muito melhor, no entanto, é dada pela resposta muito agradável de Peter , ou seja, separando destaques e sombras. Isso permitirá ajustes muito mais refinados.
Takkat 23/09/2013
Agora eu entendi. Conseguiram exatamente o que eu preciso seguindo estas instruções. Muito obrigado
aMMT
Eu poderia ter o psd para este tutorial, estou tendo problemas em obter a transparência.
@ Takkat, por favor, mencione as etapas para o segundo ponto - "Então designei um canal alfa para uma cor 'cinza' (em vez de branca)"?
Vishal
13

Para isso, é melhor criar canais separados para sombras e realces .

As sombras podem ser obtidas diretamente da camiseta branca e usadas como multiplicador (0-100%) para a cor da camiseta (modo de camada: multiplicar)

Quanto aos destaques , isso realmente depende do material. O pano não reflete muita luz na superfície; portanto, a maior parte de sua cor é proveniente de luz difusa (a cor da camiseta). Para extrair a luz especular, eu usaria um filtro passa-alto (adaptação do histograma: apenas as cores brilhantes e nenhuma das cores escuras) na imagem da camisa branca e a usaria para clarear a camisa, mas apenas com talvez 20% (baixa reflexão).

Camadas:

insira a descrição da imagem aqui

Imagens resultantes:

insira a descrição da imagem aqui

Peter Walser
fonte
Isso é ótimo. Existe alguma maneira de obter a imagem final como um PNG transparente? O objetivo final aqui é usar uma única imagem png em um site e, alterando a cor de fundo da div html que contém a imagem, a cor da camisa mudará efetivamente.
aMMT 23/09
Estou tendo problemas para obter os destaques. Acho que estou perdendo uma etapa porque, depois de aplicar um filtro passa-alto, a camisa na camada em que apliquei o filtro passa muito cinza (não há muito contraste como eu vejo na camada Destaques) . Usei um raio de 20 pixels no filtro passa-alta primeiro e depois tentei alguns valores de raio diferentes, mas não estou chegando perto do que é visto na camada de destaques. O que posso estar perdendo?
aMMT 23/09
Use o mesmo método, preencha o plano de fundo / parte externa da imagem em branco e deixe seu css atuar como a camada inferior. A camisa seria uma janela semi-transparente.
John
Eu gostaria de entender melhor essa resposta porque parece muito legal.
21413 Hanna
Esse efeito precisa de modos de mesclagem (multiplicar, clarear), enquanto o HTML usa apenas a mesclagem normal (pintando imagens transparentes umas sobre as outras). HTML5 + SVG seria uma opção, mas os modos de mesclagem SVG parecem ainda não ser suportados pelos navegadores. Veja dev.w3.org/SVG/modules/compositing/master/… . Uma maneira eficaz de fazer esse efeito em um navegador seria com um pequeno programa java (modos de mesclagem Java2d) incorporado na página.
Peter Walser
1

Existe uma maneira mais fácil - selecione o plano de fundo branco, inverta-o, defina a predefinição do pincel, crie um novo arquivo com base transparente, em escala de cinza - e é isso. Selecione o pincel, que é o último da lista e clique uma vez com a amostra preta de quatro metros. Voila! Do que você pode salvar como web - png.

Valentina Yototva
fonte
1

Use filtros CSS em vez de várias imagens

Você deve usar filtros CSS para colorir a imagem de um site.

insira a descrição da imagem aqui

Os benefícios são os seguintes.

  1. Apenas uma imagem é necessária.
  2. Tamanho de arquivo de imagem menor.
  3. Mais controle sobre suas cores sem precisar usar um editor de imagens.
  4. Móvel amigável.
  5. Tempos de carregamento mais rápidos.
  6. Melhor SEO.

Para o Hue, use este filtro CSS:

img {
  -webkit-filter: hue-rotate(90deg);
  filter: hue-rotate(90deg);
}

Para brilho use:

img {
  -webkit-filter: hue-rotate(90deg);
  filter: hue-rotate(90deg);
}

Para saturação, use:

img {
  -webkit-filter: saturate(8);
  filter: saturate(8);
}

Para uso em escala de cinza :

img {
  -webkit-filter: grayscale(1);
  filter: grayscale(1);
}
Mudança invariável
fonte