You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

16 lines
480 B

  1. # frozen_string_literal: true
  2. module Paperclip
  3. class BlurhashTranscoder < Paperclip::Processor
  4. def make
  5. return @file unless options[:style] == :small
  6. pixels = convert(':source 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