class RemoveBg::CompositeResult

Handles image composition for larger images (over 10MP) where transparency is required. @see RemoveBg::Result

Public Instance Methods

save_zip(file_path, overwrite: false) click to toggle source

Saves the ZIP archive containing the alpha.png and color.jpg files (useful if you want to handle composition yourself) @param file_path [string] @param overwrite [boolean] Overwrite any existing file at the specified path @return [nil]

# File lib/remove_bg/composite_result.rb, line 15
def save_zip(file_path, overwrite: false)
  if File.exist?(file_path) && !overwrite
    raise FileOverwriteError.new(file_path)
  end

  FileUtils.cp(download, file_path)
end

Private Instance Methods

alpha_file() click to toggle source
# File lib/remove_bg/composite_result.rb, line 40
def alpha_file
  @alpha_file ||= binary_tempfile(["alpha", ".png"])
end
binary_tempfile(basename) click to toggle source
# File lib/remove_bg/composite_result.rb, line 61
def binary_tempfile(basename)
  Tempfile.new(basename).tap { |file| file.binmode }
end
color_file() click to toggle source
# File lib/remove_bg/composite_result.rb, line 36
def color_file
  @color_file ||= binary_tempfile(["color", ".jpg"])
end
compose_to_file(destination) click to toggle source
# File lib/remove_bg/composite_result.rb, line 44
def compose_to_file(destination)
  extract_parts

  ImageComposer.new.compose(
    color_file: color_file,
    alpha_file: alpha_file,
    destination_path: destination.path
  )
end
composite_file() click to toggle source
# File lib/remove_bg/composite_result.rb, line 29
def composite_file
  @composite_file ||= begin
    binary_tempfile(["composed", ".png"])
      .tap { |file| compose_to_file(file) }
  end
end
extract_parts() click to toggle source
# File lib/remove_bg/composite_result.rb, line 54
def extract_parts
  Zip::File.open(download) do |zf|
    zf.find_entry("color.jpg").extract(color_file.path) { true }
    zf.find_entry("alpha.png").extract(alpha_file.path) { true }
  end
end
image_file() click to toggle source
# File lib/remove_bg/composite_result.rb, line 25
def image_file
  composite_file
end