diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2019-04-27 03:24:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-27 03:24:09 +0200 |
commit | fba96c808d25d2fc35ec63ee6745a1e55a95d707 (patch) | |
tree | 01b9427a5d22fbedf92de37df0488aacb55b7fdc /lib/paperclip | |
parent | c008911249a2fc0efaf22b83e51ea8510e67acac (diff) |
Add blurhash (#10630)
* Add blurhash * Use fallback color for spoiler when blurhash missing * Federate the blurhash and accept it as long as it's at most 5x5 * Display unknown media attachments as blurhash placeholders * Improve style of embed actions and spoiler button * Change blurhash resolution from 3x3 to 4x4 * Improve dependency definitions * Fix code style issues
Diffstat (limited to 'lib/paperclip')
-rw-r--r-- | lib/paperclip/blurhash_transcoder.rb | 16 |
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 |