2011-07-26 8 views
4

RMagick 및 Rails를 사용하여 CMYK EPS에서 RGB PNG로 이동하는 데 오래 동안 노력했습니다. 희망이 사람에게 유용 할 것입니다 :RMagick : CMYK EPS를 투명한 배경을 유지하는 RGB PNG로 변환

def convert_image_from_cmyk_to_rgb(image) 
    #puts image.alpha? 
    if image.colorspace == Magick::CMYKColorspace 
    image.strip! 
    image.add_profile("#{Rails.root}/lib/USWebCoatedSWOP.icc") 
    image.colorspace == Magick::SRGBColorspace 
    image.add_profile("#{Rails.root}/lib/sRGB.icc") 
    end 
    image 
end 

당신은 ICC 파일이 http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html

유일한 내가 조사해내는 수 없었던 것은 투명성을 유지하는 방법입니다에 어도비에서 직접 다운로드 할 수 있습니다. 사용하려는 EPS에는 흰색으로 바뀌는 투명한 배경이 있습니다. 불행히도 나는 흰색으로 유지하고자하는 이미지에 흰색이 있으므로 image.transparent("white")과 같은 것을 할 수 없습니다.

위 코드에서 puts image.alpha?의 주석을 제거하면 false을 반환합니다.

투명성이있는 CMYK EPS를 가져 오는 것이 지원되지 않는지 궁금해지기 때문에 내가하려는 일은 현재 RMagick에서 가능합니다.

감사합니다.

+0

페이지를 흰색이 아닌 다른 것으로 칠한 다음 해당 색을 투명하게 설정 했습니까? TV는 녹색이 사용되지 않는 색상이기 때문에 흰색 화면이 아닌 "녹색 화면"을 사용합니다. –

답변

0

RMagick에 대한 paint_transparent 명령에 대해 알고 있나요?

image.paint_transparent(color, opacity=TransparentOpacity, invert=false, fuzz=img.fuzz) -> image 

설명은 불투명도에 의해 지정된 값에 색상을 일치하는 모든 픽셀의 불투명도 값을 변경합니다. invert가 true 인 경우 색상과 일치하지 않는 픽셀을 변경합니다.

인수

색 이름 중 하나 또는 화소.

불투명도 새로운 불투명도 값, 불투명도 값 또는 0과 QuantumRange 사이의 숫자입니다. 기본값은 TransparentOpacity입니다.

반전 true로 설정하면 대상색이 아닌 모든 픽셀이 변경됩니다.

퍼즈는 기본적으로 픽셀은 정확히 일치해야합니다,하지만 당신은 양의 값을 전달하여 허용 수준을 지정할 수 있습니다.

반환가 새로운 이미지

마법 (magick)의 API TransparentPaintImage는

당신은 railscasts http://railscasts.com/episodes/374-image-manipulation의이 비디오를 본 적이 있나요? 그는 github 로고를 사용하여 투명도가 적용된 스탬프를 만듭니다.