about summary refs log tree commit diff
path: root/lib/paperclip/blurhash_transcoder.rb
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2019-05-05 20:53:07 +0200
committerGitHub <noreply@github.com>2019-05-05 20:53:07 +0200
commite4ca5414a37b7973247a283a364b27052c8f9d1c (patch)
treedcb7769320c5a35b229ef579a20aa2fff209ea94 /lib/paperclip/blurhash_transcoder.rb
parent2c2f649200ba5b742ba9d17ac5ba553c752b59aa (diff)
parenteef8802325d75b2668b131a765c5555f4be8c2ce (diff)
Merge pull request #1032 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'lib/paperclip/blurhash_transcoder.rb')
-rw-r--r--lib/paperclip/blurhash_transcoder.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/paperclip/blurhash_transcoder.rb b/lib/paperclip/blurhash_transcoder.rb
new file mode 100644
index 000000000..08925a6dd
--- /dev/null
+++ b/lib/paperclip/blurhash_transcoder.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+module Paperclip
+  class BlurhashTranscoder < Paperclip::Processor
+    def make
+      return @file unless options[:style] == :small
+
+      pixels   = convert(':source RGB:-', source: File.expand_path(@file.path)).unpack('C*')
+      geometry = options.fetch(:file_geometry_parser).from_file(@file)
+
+      attachment.instance.blurhash = Blurhash.encode(geometry.width, geometry.height, pixels, options[:blurhash] || {})
+
+      @file
+    end
+  end
+end