2017-10-30 36 views
0

더 구체적으로 말하자면, 저는 (아마도 ISO Coated v2 공간에서) CMYK 값을 Ruby 플랫폼의 RGB 값 (아마도 sRGB 공간)으로 변환하고 싶습니다.).ImageMagick으로 색상 변환하기 (이미지가 아님)

ImageMagick은 시작하기에 좋은 장소 같았지만, LittleCMS는 Ruby으로 작동하도록 이식/포장되었을 수도 있습니다.

다시 한 번 이미지 파일이 아닌 단일 색상으로 변환하려고합니다. 어떤 아이디어? ImageMagick과에서

+0

https://github.com/halostatue/color를 보셨습니까? – msanford

+0

@msanford 나는 생각했지만 사용 예제를 찾을 수 없었다. 어떤 튜토리얼/API를 알고 있습니까? – sambecker

+0

아니요, 테스트를 통해 구현 방법을 확인하실 수 있습니다. https://github.com/halostatue/color/blob/master/test/test_cmyk.rb – msanford

답변

1

, 다음을 수행 할 수 있습니다

convert xc:"cmyk(0,255,255,0)" -colorspace sRGB -format "%[pixel:u.p{0,0}]\n" info: 
red 

convert xc:"cmyk(0,255,255,0)" -profile /Users/fred/images/profiles/USWebCoatedSWOP.icc -profile /Users/fred/images/profiles/sRGB.icc -format "%[pixel:u.p{0,0}]\n" info: 
srgb(93%,11%,14%) 
+0

이것은 매우 유망 해 보이지만 터미널에서 다음과 같은 오류가 계속 발생합니다.'convert : 'sRGB'@ error/convert.c/ConvertImageCommand/3251'. 문서 (https://www.imagemagick.org/script/convert.php)는'convert'는 색 변환이 아닌 이미지 번역을위한 것이라고 제안합니다. 어떤 아이디어? – sambecker

+0

ImageMagick 버전 및 플랫폼은 무엇입니까? 구문 차이가있을 수 있습니다. 아주 오래된 IM 버전에서 -colorspace sRGB를 RGB로 대체 해보십시오. 어느 명령으로 오류가 발생 했습니까? 두 번째 명령에서 자신의 경로를 내 경로가 아닌 프로필에 지정하십시오. 이 명령은 색상을 1 픽셀 이미지로 변환 한 다음 색상 공간을 변환하고 생성 된 1 픽셀 이미지를 저장하지 않고 픽셀 색상 값을 읽습니다. – fmw42

+0

저는 Homebrew를 통해 설치 한 ImageMagick의 현재 버전을 사용하여 macOS Sierra 10.12에 있습니다. lcms가 어떤 이유에서든 위임자로 보이지는 않지만 -little-cms를 사용하면 ... – sambecker

1

당신이 더 중요한 (sRGB)의 자리 (X %를 X의 % X %)을

을 보장하는 형식으로 조정할 수 있나요

다른 IM 버전이있을 가능성이 있습니다. IM 7.0.7.8은 srgb (93.0648 %, 11.1254 %, 14.1741 %)를 보여줍니다. IM 6.9.9.20은 정수를 보여줍니다. 나는 IM 6 명령 행에 -precision 4를 추가하려고 시도했지만 여전히 정수를 얻는다. 더 많은 정밀도를 얻으려면 txt : 출력 형식을 구문 분석해야합니다.

구문 분석하지 않고 예를 들어

:

convert xc:"cmyk(0,255,255,0)" -profile /Users/fred/images/profiles/USWebCoatedSWOP.icc -profile /Users/fred/images/profiles/sRGB.icc txt: 
# ImageMagick pixel enumeration: 1,1,65535,srgb 
0,0: (60990,7291,9289) #EE3E1C7B2449 srgb(93%,11%,14%) 

그래서 당신은 괄호 (IM Q16의 경우) 16 비트 값을 구문 분석 할 필요가있다, 즉, (60990,7291,9289)

vals=`convert xc:"cmyk(0,255,255,0)" \ 
-profile /Users/fred/images/profiles/USWebCoatedSWOP.icc \ 
-profile /Users/fred/images/profiles/sRGB.icc txt: |\ 
tail -n +2 | sed -n 's/^.*[(]\(.*\)[)][ ]*\#.*$/\1/p'` 
red=`echo $vals | cut -d, -f1` 
green=`echo $vals | cut -d, -f2` 
blue=`echo $vals | cut -d, -f3` 
red=`convert -precision 4 xc: -format "%[fx:100*$red/quantumrange]" info:` 
green=`convert -precision 4 xc: -format "%[fx:100*$green/quantumrange]" info:` 
blue=`convert -precision 4 xc: -format "%[fx:100*$blue/quantumrange]" info:` 
color="srgb($red%,$green%,$blue%)" 
echo "$color" 
srgb(93.06%,11.13%,14.17%) 

원하는 유효 자릿수에 대해 -precision을 조정하십시오.

참고 : IM 7에서는 -precision이 작동합니다.

magick xc:"cmyk(0,255,255,0)" -profile /Users/fred/images/profiles/USWebCoatedSWOP.icc -profile /Users/fred/images/profiles/sRGB.icc -format "%[pixel:u.p{0,0}]\n" info: 
srgb(93.0648%,11.1254%,14.1741%) 

magick -precision 4 xc:"cmyk(0,255,255,0)" -profile /Users/fred/images/profiles/USWebCoatedSWOP.icc -profile /Users/fred/images/profiles/sRGB.icc -format "%[pixel:u.p{0,0}]\n" info: 
srgb(93.06%,11.13%,14.17%) 

magick -precision 2 xc:"cmyk(0,255,255,0)" -profile /Users/fred/images/profiles/USWebCoatedSWOP.icc -profile /Users/fred/images/profiles/sRGB.icc -format "%[pixel:u.p{0,0}]\n" info: 
srgb(93%,11%,14%)