Sha256: 14dcdc849d65a182075699c537883240215e6301ae04ce500abfbee8201d734f
Contents?: true
Size: 1.21 KB
Versions: 4
Compression:
Stored size: 1.21 KB
Contents
#!/usr/bin/ruby # An equivalent of ImageMagick's -trim in ruby-vips ... automatically remove # "boring" image edges. # We use .project to sum the rows and columns of a 0/255 mask image, the first # non-zero row or column is the object edge. We make the mask image with an # amount-different-from-background image plus a threshold. require 'vips' im = Vips::Image.new_from_file ARGV[0] # find the value of the pixel at (0, 0) ... we will search for all pixels # significantly different from this background = im.getpoint(0, 0) # we need to smooth the image, subtract the background from every pixel, take # the absolute value of the difference, then threshold mask = (im.median - background).abs > 10 # sum mask rows and columns, then search for the first non-zero sum in each # direction columns, rows = mask.project first_column, first_row = columns.profile left = first_row.min first_column, first_row = columns.fliphor.profile right = columns.width - first_row.min first_column, first_row = rows.profile top = first_column.min first_column, first_row = rows.flipver.profile bottom = rows.height - first_column.min # and now crop the original image im = im.crop left, top, right - left, bottom - top im.write_to_file ARGV[1]
Version data entries
4 entries across 4 versions & 2 rubygems
Version | Path |
---|---|
ruby-vips-2.0.14 | example/trim8.rb |
vips-8.8.0.3 | example/trim8.rb |
vips-8.8.0.2 | example/trim8.rb |
vips-8.8.0.1 | example/trim8.rb |