2017-10-20 5 views
0

MiniMagick과 함께 Ruby 5에서 Carrierwave를 사용하면 투명 픽셀을 트리밍 할 수 있습니까?반송파로 투명한 픽셀 자르기

사용자가 500x500 이미지를 업로드하지만 내부 250x250 픽셀 만 실제로 채워지고 나머지는 투명하다고 가정 해 보겠습니다. 추가 처리 전에 250x250으로 이미지를 감지하고 트리밍하는 데 도움이되는 처리 명령이 있습니까?

나는 https://www.imagemagick.org/discourse-server/viewtopic.php?t=12127을 찾았으며 Imagemagick에 trim transparent 명령이있는 것 같지만 Ruby wrapper Minimagick과 함께 사용하는 방법을 모르겠다.

답변

1

MiniMagick::Image.trim 모두 필요합니다. 픽셀 반복기가 없으면 복제 이미지에 트림을 적용하고 가장 작은 결과를 얻는 것이 가장 간단합니다. convert rose: -resize x100 rose.png

rose = trimed_image("rose.png") 
rose.write("rose_output.png") 

예상 변화없이

require 'mini_magick' 

def trimed_image(path) 
    image = MiniMagick::Image.open(path) 
    test_image = image.clone 
    test_image.trim 
    if test_image.width < image.width || test_image.height < image.height 
    test_image 
    else 
    image 
    end 
end 

테스트 케이스. convert -size 100x100 gradient: -background black -extent 200x200-50-50 -alpha copy trim.png

trim = trimed_image("trim.png") 
trim.write("trim_output.png") 

트림

rose_output.png

테스트 투명 화상 예상.

trim_output.png