Class: SafeImage::Processor

Inherits:
Object
  • Object
show all
Defined in:
lib/safe_image/processor.rb

Constant Summary collapse

SUPPORTED_INPUTS =
Formats::NATIVE_INPUTS
SUPPORTED_OUTPUTS =
Formats::NATIVE_OUTPUTS
OPTIMIZABLE_OUTPUTS =

Formats the post-processing optimizer tools understand; other outputs skip the optimize pass instead of erroring.

Formats::OPTIMIZABLE_OUTPUTS

Instance Method Summary collapse

Constructor Details

#initialize(max_pixels: nil, chroma_subsampling: :auto, config: SafeImage.config) ⇒ Processor

Returns a new instance of Processor.



11
12
13
14
15
# File 'lib/safe_image/processor.rb', line 11

def initialize(max_pixels: nil, chroma_subsampling: :auto, config: SafeImage.config)
  @config = config
  @max_pixels = max_pixels || config.max_pixels
  @chroma_subsampling = chroma_subsampling
end

Instance Method Details

#probe(path) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/safe_image/processor.rb', line 17

def probe(path)
  input = safe_existing_file!(path)
  info = Native.probe(input.to_s, @max_pixels)
  validate_pixels!(info.fetch(:width), info.fetch(:height))
  Result.(
    input: input,
    input_format: info.fetch(:format),
    width: info.fetch(:width),
    height: info.fetch(:height),
    backend: :vips,
    duration_ms: info.fetch(:duration_ms)
  )
end

#thumbnail(input:, output:, width:, height:, format: nil, quality: QualityDefaults::JPEG, optimize: false, optimize_mode: :lossless) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/safe_image/processor.rb', line 31

def thumbnail(
  input:,
  output:,
  width:,
  height:,
  format: nil,
  quality: QualityDefaults::JPEG,
  optimize: false,
  optimize_mode: :lossless
)
  input, output, width, height, quality, out_format =
    prepare_thumbnail_request(
      input: input,
      output: output,
      width: width,
      height: height,
      format: format,
      quality: quality
    )
  info =
    thumbnail_info(input: input, output: output, width: width, height: height, quality: quality, format: out_format)
  opt_info =
    optimize_thumbnail_output(output, format: out_format, quality: quality, mode: optimize_mode) if optimize

  thumbnail_result(input: input, output: output, info: info, optimizer: opt_info)
end