미리 곱하지 않은 RGB + 알파로의 투명도


16

Photoshop CS5에는 투명한 레이어가 있습니다 (내부적으로 미리 곱하지 않은 RGB 구성 요소와 픽셀 당 알파 구성 요소로 저장되어 있음).

이제 이것을 불투명 레이어 (미리 곱셈되지 않은 RGB) + 알파 마스크로 변환하고 싶습니다. 결과는 원본과 같아야합니다.

투명 레이어를 검은 색으로 표시 할 수는 없으며 마스크로 선택하고 마스크를 선택하여 레이어를 병합하면 알파가 RGB 값에 미리 곱해지기 때문입니다.

나는 당신이 문제를 이해하고 나에게 해결책을 줄 수 있기를 바랍니다.

대안 설명으로 : 나는 이것의 REVERSE 프로세스를 원합니다.

  1. 새 레이어를 만들고 이미지에 붙여 넣기
  2. 흰색에서 검은 색 그라디언트로 마스크를 만듭니다.
  3. 레이어 마스크를 적용

설명 이미지 :

상태 A : 여기에 이미지 설명을 입력하십시오

상태 B : 여기에 이미지 설명을 입력하십시오


중요 : 레이어는이 예의 경우 완전히 일정한 빨간색이지만 일정한 빨강 대신 임의의 이미지를 생각할 수 있습니다. 따라서 상태 A에서 상태 B로 이동하려면 레이어 마스크를 적용하기 만하면됩니다.

상태 B에서 상태 A로가는 방법을 알고 싶습니다.


어떤 유형의 마스킹 플러그인이 도움이 될지 궁금합니다. 불투명도 정보는 존재하며 정보 를 얻는 방법 의 문제 일뿐 입니다. 픽셀 수준 정보를 얻는 것이 스크립팅 API에는 존재하지 않습니다 (적어도 Applescript에는 있지만 지원되는 모든 언어는 내가 본 것과 일치하는 것 같습니다).
Philip Regan

답변:


6

나는 당신의 고통을 완전히 이해합니다. 여기 내 해결책이 있습니다 :)
마스크 액션으로 알파 추출
여기는 무엇입니까?

여기에 이미지 설명을 입력하십시오 편집 :
여기에 이미지 설명을 입력하십시오
이것이 도움이되기를 바랍니다 :)


우와, 멋지다. 물론 행동을 사용하여 참을 수있는 과정이되어야한다.
Ars Magika

5

잘못된! 모든 잘못된!

나는 스스로를 속였고, 당신도 프로세스에서 : 내가 만든 것은 실제로 미리 곱셈 된 이미지입니다-미리 곱셈되지 않고 흰색입니다. 나는이 답변을 다른 사람들이 생각해 볼 수 있도록 남겨둔다.


나는 이렇게했다 :

  1. 이미지에서 진정한 RGBA 채널 추출
  2. 그것들을 사용하여 새로운 이미지를 만드십시오

그리고 내가 한 방법은 다음과 같습니다.

테스트 이미지

이것은 내가 사용한 테스트 이미지입니다. PS의 채널보기는 다음과 같습니다.

채널

개별 채널을 선택하여 개별 레이어에 복사 한 다음 흰색 배경으로 평평하게하여 다음과 같이 흑백 맵을 수신했습니다.

bw-지도

또한 레이어 축소판을 명령 클릭하고 새 레이어를 선택 항목으로 채워서 원본 이미지의 투명도를 레이어로 추출했습니다.

그런 다음 동일한 크기로 투명도없는 새 이미지를 만들었습니다. 그런 다음 내가 만든 RGB 레이어를 새 이미지의 해당 채널에 붙여 넣었습니다.

새로운 이미지의 채널

마지막 단계에서 두 번 클릭하여 레이어를 '평면화'하고 원래 이미지의 알파 레이어를 사용하여 레이어 마스크를 만들었습니다.

레이어 마스크


위에서 언급했듯이, 이것은 미리 곱셈되지 않은 이미지를 만들지 않습니다. 제 예제는 미리 곱셈되지 않은 것처럼 보일 것입니다.

올바른 버전

나보다 똑똑한 사람이 있나요? 고급 픽셀 기반 스크립팅 없이는 Photoshop에서이 기능을 사용할 수 없습니다.


5

Ok-Photoshop PixelBender 플러그인 (http://labs.adobe.com/downloads/pixelbenderplugin.html)과 함께 사용하여 레이어의 투명도를 제거 할 수있는 간단한 pixelBender 필터를 만들었습니다. 여기 있습니다 : http://neo.cycovery.com/removeTransparency.pbk


2

주어진 답변과 귀하의 의견을 바탕으로, 짧은 대답은 : 당신이 원하는 것을 할 수 없습니다. 마스크를 적용하면 레이어가 렌더링되고 보이지 않는 이미지 데이터가 삭제됩니다.

편집하다:

샘플 png 파일을 만든 다음 php를 사용하여 조작했습니다 (아래 소스 코드).

임의의 투명도를 가진 png를 만들고 레이어에 마스크가있는 동안 저장하면 상자 지원 등의 100 % 투명 영역이 알파 지원의 사용 가능 여부에 따라 흰색으로 표시됩니다. 100 % 투명도가 포함 된 그라디언트는 알파가 비활성화 된 상태로 나타나지 않습니다.

레이어 마스크를 (영구적으로) 적용한 다음 png를 만들면 알파가 비활성화되어 있으면 php가 원본 이미지를 제공합니다.

따라서이를위한 잠재적 인 해결 방법은 알파 PNG를 지원하지 않는 소프트웨어 패키지를 찾아서 다시 저장하는 것입니다. 원래 마스크를 복구하는 것에 대해서는 아직 살펴 보지 않았습니다.

두 코드 샘플 모두 개념 증명과 SLOW입니다.

<?php

$im = imagecreatefrompng('./images/alphatest_nolayer.png');
$enable_alpha = 0;  //set to 0 to disable aplha

if ($enable_alpha) {
    imagealphablending($im, false);
    imagesavealpha($im, true);
}

header('Content-Type: image/png');
imagepng($im);

imagedestroy($im);

?>

알파를 추출하려면 (참고 : php에는 256이 아니라 128 레벨 알파의 GD 제한이 있으므로) 일부 정밀도가 손실됩니다. 레벨 도구를 사용하여 알파를 256으로 늘릴 수 있습니다)

<?php

$im = imagecreatefrompng('./images/alphatest_nolayer.png');
$w = imagesx($im);
$h = imagesy($im);

$om = imagecreatetruecolor($w,$h);

for ($x = 0; $x < $w; $x++) {
    for ($y = 0; $y < $h; $y++) {
        $rgb = imagecolorat($im, $x, $y);
        $colors = imagecolorsforindex($im,  $rgb);

        $orgb = imagecolorallocate($om,$colors['alpha'],$colors['alpha'],$colors['alpha']);
        imagesetpixel($om,$x,$y,$orgb);
    }
}

header('Content-Type: image/png');
imagepng($om);

imagedestroy($om);
imagedestroy($im);

?>

그러나 데이터는 여전히 존재합니다. RGBA 픽셀 데이터의 RGB 부분입니다. 그것을 추출하는 방법이 있어야합니다
Mat

1
실제 예제 파일을 제공하지 않는 이유는 무엇입니까? 귀하의 질문에 투명 영역이 있고 마스크가없는 단일 레이어를 명확하게 표시하거나 알파 채널을 표시하지 않습니다.
horatio

.png는 100 % 투명 검정에 대해 사전 정의 된 팔레트 색상을 가지며, 이는 일부 디스크 공간을 절약하기 위해 100 % 투명도가있을 때마다 (포토샵에서) 사용됩니다.
Ars Magika

이것이 실제로 질문에 대한 대답인지 확실하지 않습니다. PNG 처리에만 국한된 것 같습니다.
e100

2

나는 김프에서 그것을 하는 방법을 알았습니다 그것은 PhotoShop이 아닐 수도 있지만 적어도 당신이 요구하는 것을 할 것입니다. (어쨌든 해석 할 때;))

  • 김프에서 이미지를 엽니 다.
  • 레이어 상자 에서 레이어를 마우스 오른쪽 버튼으로 클릭
  • 컨텍스트 메뉴에서 " 레이어 마스크 추가 "를 선택하십시오
  • 다음 메뉴에서 " 전송 레이어 알파 채널 "을 선택하고 " 추가 "-버튼을 클릭하십시오

이제 알파 채널 마스크가있는 이미지가 남았습니다.

한 단계 더 나아갈 수 있습니다.

  • 오른쪽 레이어 마스크를 클릭하고 "선택 삭제 레이어 마스크를 "
  • 이제 알파 마스크없이 이미지가 남았습니다.

도 있습니다 유튜브 클립 을 수행하는 방법에 대한이.


로베르토 : 네, 답을 찾았습니다. 그것이 바로 우리가 원하는 것이며 무료입니다! 나는 당신이 게시 한 비디오를 다른 사람에게 같은 질문으로 답할 것입니다. (PS에서 레이어를 무한 복제함으로써 만 가능할 때까지)

1

이것은 엄청나게 복잡해 보입니다. 원래 질문과 다양한 설명을 올바르게 이해하면 투명도를 포함하는 임의의 이미지를 가져 와서 완전히 불투명하게 만든 다음 원래 알파 값을 마스크로 적용하여 원래 모양을 재현하는 것입니다.

이것이 질문이라면 조금 지루한 경우에 매우 간단한 대답입니다.

  1. 레이어를 10 번 복사하십시오. 투명도는 합성 이미지에서 "채워집니다".

  2. 모든 사본을 병합하십시오 (그러나 마지막 단계에 필요한 원래 레이어는 아님 ).

  3. 병합 된 레이어로 1 단계와 2 단계를 반복 한 다음 다시 수행하십시오. 이 시점에서 투명도가 100 % 미만인 모든 픽셀은 이제 100 % 불투명합니다 (일부 얼룩이있는 경우 없을 때까지 프로세스를 반복). 복구 할 수있는만큼의 이미지 정보입니다.

  4. Ctl / Cmd- 원본 레이어 축소판을 클릭 하여 투명도를로드합니다.

  5. 불투명 한 새 레이어를 선택한 상태에서 레이어 패널에서 레이어 마스크 아이콘을 클릭합니다.


0

좋아, 이것은 실제로 매우 간단합니다 (행진 한 개미를 무시해야합니다)

새 레이어를 만들고 사용중인 색상으로 완전히 채 웁니다 (샘플링이 첫 번째 이미지의 데드 센터에서 가져온 경우)

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

그런 다음 첫 번째 이미지를 가져 와서 CTRL + 레이어 축소판을 클릭하면 다음과 같은 버전이 표시됩니다. 여기에 이미지 설명을 입력하십시오

앞서 말했듯이 : 행진하는 개미를 무시하면 페더 링이 CS5에서 자동으로 적용됩니다.

그런 다음 채워진 레이어를 선택했는지 확인하고 마스크 버튼을 클릭하십시오.

여기에 이미지 설명을 입력하십시오

그런 다음 맨 아래 레이어를 숨기면 다음과 같은 효과가 나타납니다. :)

여기에 이미지 설명을 입력하십시오

이것이 CS5에서 적용된 마스크를 리버스 엔지니어링하는 방법입니다. CS5 레이어 선택 기능은 상당히 고급이므로 대부분의 경우 선택과 함께 진행되는 깃털을 올바르게 표시하지 않으므로 행진하는 개미를 무시합니다. :)

그것이 당신을 위해 잘되기를 바랍니다.


귀하의 답변에 감사드립니다. 그러나 이것은 내가 찾고있는 것이 아닙니다. 그것은 어떤 이미지라도 (일관된 채움 색상이 아님) 될 수 있습니다-그리고 그럴 경우 원래 투명하지 않은 이미지를 사용할 수 없습니다
Mat

글쎄, 당신은 당신의 질문에 이미지를 게시해야합니다. 상수 채우기를 게시하면 상수 채우기를 기준으로 답변합니다. CS5의 선택은 매우 진보 된 기술이지만 여기에 기술을 사용하십시오. 그랬어
Kyle

물론 나는 그 선택 기술에 대해 알고 있습니다! 문제는 투명 레이어의 RGB 부분에만 액세스하는 방법입니다
Mat

레이어 위에는 채널을 클릭하는 3 개의 탭이 있습니다. 거기에는 빨강, 초록, 파랑 ​​및 레이어 마스크가 있습니다. 어쩌면 이것이 당신이 추구하는 것입니까?
Kyle

그러나 neo.cycovery.com/alpha_prob2.jpg 와 같은 레이어 에는 알파 채널이 표시되지 않습니다. 대신 투명성이 적용된 RG 및 B 채널 만 표시됩니다.
Mat

0

Photofreebies "Transparency 제거"플러그인과 같은 플러그인으로 쉽게 수행 할 수 있습니다. 먼저 레이어를 명령 클릭하여 투명 픽셀을 선택한 다음이 투명도 정보를 새 채널에 저장하여 주변에 두십시오. 그런 다음 "투명도 제거"필터를 적용하면 레이어의 '숨겨진'픽셀이 불투명하게 표시됩니다 (Photoshop이 100 % 투명 픽셀 BTW를 레이아웃하는 방법에 대해서는 매우 흥미 롭습니다). 나는 이것이 기본적으로 Photoshop에 기본적으로 내장되어 있기를 원하지만 아쉽지만 너무 고급 적이라고 생각합니다.

불행히도, Mac 용 플러그인의 Photoshop CS6 호환 버전을 찾을 수 없으므로 지금 막혀 있습니다. GraphicConverter도 가능합니다 (알파 채널 제거).


0

대답은 다음과 같습니다.

  1. 이미지에서 원하는 것들로 레이어를 만듭니다.

  2. 원하는 알파 채널을 선택하십시오.

  3. 이미지 레이어의 "레이어 마스크"를 선택하십시오.

  4. 레이어 마스크를 마우스 오른쪽 버튼으로 클릭하고 "레이어 마스크 적용"을 클릭하십시오.

이제 마술이 시작됩니다.

  1. "레이어"로 이동하고 맨 아래에서 "매팅"으로 이동 한 다음 "검은 색 매트 제거"를 선택하십시오.

아니에요!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.