2017-10-20 248 views
0

在MiniMagick的Ruby 5上使用Carrierwave,是否可以修剪透明像素?用載波來裁剪透明像素

假設用戶上傳500x500圖像,但只有內部250x250像素確實被填充,剩下的是透明的。是否有一個處理命令可以幫助在額外處理之前檢測並修剪圖像爲250x250?

我發現https://www.imagemagick.org/discourse-server/viewtopic.php?t=12127,它似乎有一個trim transparent Imagemagick命令,但我不知道如何使用它與Ruby包裝Minimagick?

回答

1

MiniMagick::Image.trim是所有需要的。如果沒有像素迭代器,將修剪應用於克隆圖像將會非常簡單,並且可以針對最小的結果採取行動。

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 rose: -resize x100 rose.png

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

沒有變化的預期。與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