Eu tenho uma camada transparente no Photoshop CS5 (portanto, internamente, é provavelmente armazenada como componente RGB não multiplicado mais um componente alfa por pixel).
Agora eu quero transformar isso em uma camada opaca (apenas RGB não-multiplicado) + uma máscara alfa. o resultado deve ser igual ao original.
Não posso simplesmente sublinhar a camada transparente com preto, pegar a seleção como uma máscara e mesclar as camadas, porque isso resultaria no alfa sendo pré-multiplicado nos valores RGB.
Espero que você entenda o problema e possa me dar uma solução para ele.
Como uma explicação alternativa: eu quero o processo REVERSE disso:
- crie uma nova camada e cole em qualquer imagem
- crie uma máscara com um gradiente de branco a preto
- aplique a máscara de camada
Imagens de explicação:
Estado A:
Estado B:
IMPORTANTE: a camada é apenas para este exemplo um vermelho totalmente constante - mas você pode pensar em qualquer imagem arbitrária em vez do vermelho constante. então - para ir do estado A ao estado B, basta aplicar a máscara de camada.
Quero saber como ir do estado B para o estado A.
fonte
Respostas:
Eu entendo completamente sua dor. Aqui está a minha solução :)
Extrair alfa como ação de máscara
Aqui está o que ele faz:
Edit:
Espero que isso ajude :)
fonte
Errado! Tudo errado!
Eu me enganei, e você também no processo: o que eu criei é de fato uma imagem pré-multiplicada - não pré-multiplicada por preto, mas por branco. Deixo esta resposta para que outros possam construir sobre ela.
Eu consegui fazer assim:
E aqui está como eu fiz isso:
Esta é a imagem de teste que eu usei. A exibição do canal no PS é assim:
Ao selecionar os canais individuais, copiei-os em camadas individuais e apliquei-os com um fundo branco para receber um mapa em preto e branco, como mostrado aqui:
Eu também extraí a transparência da imagem original em uma camada, clicando com o comando na miniatura da camada e preenchendo uma nova camada com a seleção.
Então eu criei uma nova imagem com as mesmas dimensões e sem transparência. Em seguida, colei as camadas RGB criadas nos canais correspondentes na nova imagem:
Na última etapa, cancelei a manutenção da camada clicando duas vezes e criei uma máscara de camada usando a camada alfa da imagem original, resultando no seguinte:
Como afirmado acima, isso não cria uma imagem não pré-multiplicada, pois meu exemplo teria que parecer assim para não ser pré-multiplicado:
Alguém é mais esperto que eu e pode criar isso? Acho que sem scripts avançados baseados em pixels, isso não é possível no Photoshop.
fonte
Ok - criei um filtro pixelBender simples que pode ser usado com o plugin PixelBender do photoshop (http://labs.adobe.com/downloads/pixelbenderplugin.html) para remover a transparência de uma camada. aqui está: http://neo.cycovery.com/removeTransparency.pbk
fonte
Com base nas respostas dadas e nos seus comentários, a resposta curta é: você não pode fazer o que deseja. Depois de aplicar a máscara, a camada é renderizada e os dados da imagem invisível são descartados.
EDITAR:
Criei alguns arquivos png de amostra e usei o php para manipulá-los (código-fonte abaixo).
Se eu criar um png com transparência aleatória e salvar enquanto a camada tiver uma máscara, as áreas 100% claras (como em uma ferramenta de caixa) serão exibidas em branco, independentemente de o suporte alfa ser ativado ou não. Gradientes que contêm uma quantidade de 100% de nitidez não aparecem com o alfa desativado.
Se eu aplicar a máscara de camada (permanentemente) e criar o png, o php exibirá a imagem original se o alfa estiver desativado.
Portanto, uma possível solução alternativa é encontrar um pacote de software que não suporte PNG alfa e salvá-lo a partir daí. Quanto à recuperação da máscara original, ainda não olhei para isso.
Ambos os exemplos de código são prova de conceito e SLOW.
Para extrair o alfa (nota: php tem uma limitação GD de alfa de 128 níveis, em vez de 256), portanto, alguma precisão é perdida. O alfa pode ser esticado para 256 usando a ferramenta de níveis)
fonte
Descobri como fazê-lo no GIMP , pode não ser o PhotoShop, mas pelo menos fará o que você pede. (Como eu a interpreto de qualquer maneira;))
Nesse ponto, você fica com uma imagem com uma máscara de canal alfa.
Você pode dar um passo adiante:
Há também um clipe do youtube sobre como fazê-lo.
fonte
Isso parece incrivelmente complexo. Se eu entendi a pergunta original e seus vários esclarecimentos corretamente, o problema é pegar qualquer imagem arbitrária que contenha transparência e torná-la totalmente opaca e aplicar os valores alfa originais como uma máscara para recriar a aparência original.
Se essa é a pergunta, é uma resposta muito simples, ainda que um pouco tediosa.
Copie a camada 10 vezes. A transparência será "preenchida" na imagem composta.
Mesclar todas as cópias (mas NÃO a camada original , necessária para as últimas etapas).
Repita as etapas 1 e 2 com a camada mesclada e faça novamente. Neste ponto, todos os pixels que eram menos de 100% transparentes agora são 100% opacos (se houver alguns desvios, basta repetir o processo até que não haja nenhum). São tantas informações de imagem quanto possível de recuperar.
Ctl / Cmd - Clique na miniatura da camada original para carregar sua transparência.
Com a nova camada opaca selecionada, clique no ícone de máscara de camada no Painel Camadas.
fonte
Ok, isso é realmente muito simples (você precisa ignorar as formigas marchando)
Faça uma nova camada e preencha-a inteiramente com a cor que você estiver usando (se a amostragem a levar do ponto morto da primeira imagem)
Em seguida, pegue sua primeira imagem e CTRL + Clique na miniatura da camada, você verá uma versão disso:
Como eu disse antes: ignore as formigas que marcham, as penas entram em vigor automaticamente no CS5.
Em seguida, verifique se a camada preenchida está selecionada e clique no botão de máscara:
Em seguida, basta ocultar a camada inferior e você deve concluir, com o efeito exato que deseja: :)
E é assim que a engenharia reversa de uma máscara aplicada no CS5. A função de seleção de camadas do CS5 é bastante avançada, portanto, na maioria das vezes, ignora as formigas em marcha, pois elas não mostram corretamente nenhuma penugem que irá continuar com a seleção :)
Espero que funcione para você.
fonte
O que você quer fazer é facilmente realizado por um plug-in, como o plug-in "Remover transparência" do PhotoFreebies. Primeiro, clique na camada para selecionar os pixels transparentes e, em seguida, salve essas informações de transparência em um novo canal para mantê-las por perto. Em seguida, você aplica o filtro "Remover transparência" e vê os pixels 'ocultos' em sua camada ficarem opacos (bastante interessante para ver como o Photoshop coloca seus pixels 100% transparentes entre BTW). Eu realmente desejo há anos que isso tenha sido incorporado nativamente ao Photoshop, mas, infelizmente, muito avançado, eu acho.
Infelizmente, não consigo encontrar uma versão compatível com o Photoshop CS6 de um desses plugins para o Mac, por isso estou preso no momento. O GraphicConverter também pode fazê-lo (remover canal alfa).
fonte
Aqui está a resposta:
Faça uma camada com o material que você deseja na imagem.
Faça uma seleção para o canal alfa desejado.
Faça da seleção uma "máscara de camada" para a camada da imagem.
Clique com o botão direito na máscara de camada e em "Aplicar máscara de camada".
Agora a mágica começa:
Você é bem vindo!
fonte