2009-07-22 4 views
4

이미지 클립에 모든 축소판에 그림자를 적용하여 클립의 축소판 처리를 변경하고 싶습니다. 내가 붙어있는 것은이 작은 기적을 없애는 실제적인 imagemagick 명령이다. 내가 시도한 모든 것은 원본 이미지가없는 잘못된 축소 그림자를 반환합니다.imagemagick 및 클립을 사용하여 축소판에 그림자를 적용하려면 어떻게해야합니까?

def transformation_command 
    scale, crop = @current_geometry.transformation_to(@target_geometry, crop?) 
    trans = "" 
    trans << " -resize \"#{scale}\"" 
    trans << " -crop \"#{crop}\" +repage" if crop 
    # Apply Drop Shadow 
    trans << " #{convert_options}" if convert_options? 
    trans 
end 

하나 내가 해봤 ...

def transformation_command 
    scale, crop = @current_geometry.transformation_to(@target_geometry, crop?) 
    trans = "" 
    trans << " -resize \"#{scale}\"" 
    trans << " -crop \"#{crop}\" +repage" if crop 
    trans << " \(+clone -background black -shadow 60x5+10+10 \) +swap -background none -layers merge +repage" 
    trans << " #{convert_options}" if convert_options? 
    trans 
end 

내가 ImageMagick를 완전히 새로운 해요, 어떤 도움을 크게 감상 할 수있다.

답변

4

몇 시간 동안 시행 착오를 거쳐 내 머리를 문서 , 나는 마침내 그것을 알아 냈다.

has_attached_file :image, 
    :styles => { :thumb => ["100x100#", :png] }, 
    :convert_options => { :thumb => '\(+clone -background black -shadow 70x4+0+0 \) +swap -background none -layers merge +repage' } 
  1. 는 ImageMagick이 최신 버전이 설치되어 있는지 확인합니다.
  2. [ "100x100 #", : png]는 그림자가 생길 수 있도록 이미지를 png로 변환합니다.
  3. 변환 옵션에서 : 썸은 변환을 썸 스타일에만 적용하고 all은 모든 스타일에 변환을 적용합니다.
  4. 원하는 그림자를 얻기 위해 "70x4 + 0 + 0"을 조정하십시오.
1

imagemagick 자체에 명령 줄 옵션을 보내는 대신 rmagick 인터페이스를 사용하는 것이 훨씬 쉽습니다.

rmagick을 사용하는 경우 섀도우 방법을 사용할 수 있습니다.

img = Image.read('slide.png').first 
shadow = img.shadow(0, 0, 0.0, '20%') 

그런 다음 그림자를 통해 이미지를 합성하십시오.

나는 rmagick 사용에 대한 기사를 썼다 : 그것은 당신에게 더 나은 이해를 줄 수도 동안 http://schf.uc.org/articles/2006/10/18/render-greatlooking-collages-with-ruby-and-rmagick

그것을 읽어보십시오.

나는 또한 더 쉽게 사용할 수 있도록 시도하는 rmagick에 추상화 라이브러리를 작성했습니다. Photoshop 레이어 기반의 합성을 모방하려고했기 때문에 RubyShop이라고 불렀습니다. (정말 이름이 싫어서 프로젝트를 부활 시키면 변경 될 것입니다)

관련 문제