2017-01-08 1 views
1

값이 ≥ 0.5,> = 0.5,> = 0.5 인 픽셀 및 값이 0 인 픽셀에 대해 불연속 값 1을 반환하기위한 스냅인 용 필터 플러그인을 만들었습니다 (< 0.5, < 0.5, < 0.5)그레이 스케일의 이산 값 (0/1)

디버깅을 돕기 위해 흰색에서 검은 색 선형 그래디언트를 사용하고 있습니다. 이 구배 enter image description here

, 가장 좌측의 화소가 (1,1,1)이고, 가장 오른쪽의 화소 (0, 0, 0)이며, 중심 화소 (0.5,0.5,0.5)

이다 따라서, 나는 그것의 절반이 완전히 흰색 떠나 중간에 그라데이션을 해부하기 위해 적용되는 플러그인을 예상하고 그것의 절반 완전히 검은 색, 아직 아래의 그림과 같이 내 출력은 잘못된 값을 반환

enter image description here

그림에서 알 수 있듯이 그라디언트의 약 1/3은 흰색이고 2/3은 검은 색입니다. 흑인과 백인의 동등한 비율.

Snap.filter.discrete()

Snap.filter.discrete = function() { 
    var str = "0 1" 
    return Snap.format('<feComponentTransfer>' + 
    '<feFuncR type="discrete" tableValues="' + str + '"/>' + 
    '<feFuncG type="discrete" tableValues="' + str + '"/>' + 
    '<feFuncB type="discrete" tableValues="' + str + '"/>' + 
    '</feComponentTransfer>'); 
}; 
내가 잘못 않았다

: 여기

내 코드?

바이올린 : 각각의 sRGB와 linearRGB : https://jsfiddle.net/z7a49npn/1/

답변

3

이는 SVG 구배 및 필터에 사용되는 기본 색 공간 사이의 불일치에 의해 야기된다.

color-interpolation-filters="sRGB" 

을 필터 요소에 추가하면 모든 것이 작동합니다.

+0

그것은 나를 위해 일했습니다! 나는 그것을 기대하지 않았다!! 당신은 내 인생에 몇 년을 더했습니다. 고맙습니다! –

관련 문제