blurhash_transcoder.rb 515 B

1234567891011121314151617
  1. # frozen_string_literal: true
  2. module Paperclip
  3. class BlurhashTranscoder < Paperclip::Processor
  4. def make
  5. return @file unless options[:style] == :small || options[:blurhash]
  6. pixels = convert(':source -depth 8 RGB:-', source: File.expand_path(@file.path)).unpack('C*')
  7. geometry = options.fetch(:file_geometry_parser).from_file(@file)
  8. attachment.instance.blurhash = Blurhash.encode(geometry.width, geometry.height, pixels, **(options[:blurhash] || {}))
  9. @file
  10. end
  11. end
  12. end