class Despeck::Commands::Remove

Subcommand that removes watermarks from images & PDFs

Public Instance Methods

execute() click to toggle source
# File lib/commands/remove.rb, line 41
def execute
  Despeck.apply_logger_level(debug?)

  if input_file.end_with?('.pdf')
    origin_images = PdfTools.pdf_to_images(input_file)
    images = origin_images.map do |image|
      remove_watermark_from_image(image, nil)
    end
    PdfTools.images_to_pdf(images, output_file, origin_images)
  else
    remove_watermark_from_image(input_file, output_file)
  end
end

Private Instance Methods

remove_watermark_from_image(input, output) click to toggle source
# File lib/commands/remove.rb, line 57
def remove_watermark_from_image(input, output)
  wr =
    WatermarkRemover.new(
      add_contrast: add_contrast?,
      accurate: accurate?,
      black_const: black_const,
      sensitivity: sensitivity,
      watermark_color: color
    )

  input_image =
    input.is_a?(String) ? Vips::Image.new_from_file(input) : input

  output_image = wr.remove_watermark(input_image)
  return output_image unless output

  output_image&.write_to_file(output)
end