Skip to content

Commit

Permalink
Handle resize_to_limit and saver.quality to be compatible with MiniMa…
Browse files Browse the repository at this point in the history
…gick and Vips (#6)
  • Loading branch information
SebouChu committed Apr 3, 2022
1 parent 1da88db commit c50ec1d
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 10 deletions.
6 changes: 3 additions & 3 deletions app/views/kamifusen/_view.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,15 @@ end
default_width = width_retina if width_retina && width_retina > default_width
if Kamifusen.with_webp
srcset_webp = variant_sizes.map { |size|
variant = source.variant(resize: "#{size}>", format: :webp, quality: quality)
variant = source.variant(resize_to_limit: [size, nil], format: :webp, saver: { quality: quality })
"#{ Kamifusen.process(variant, active_storage_direct_url) } #{size}w"
}.join(', ')
end
srcset_default = variant_sizes.map { |size|
variant = source.variant(resize: "#{size}>", quality: quality)
variant = source.variant(resize_to_limit: [size, nil], saver: { quality: quality })
"#{ Kamifusen.process(variant, active_storage_direct_url) } #{size}w"
}.join(', ')
variant = source.variant(resize: "#{default_width}>", quality: quality)
variant = source.variant(resize_to_limit: [default_width, nil], saver: { quality: quality })
default = Kamifusen.process(variant, active_storage_direct_url)
%>
<picture<%= " class=\"#{picture_class}\"".html_safe unless picture_class.blank? %>>
Expand Down
39 changes: 32 additions & 7 deletions lib/kamifusen/processor.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,44 @@ def url

protected

def keycdn_url
url = "#{Kamifusen.keycdn}/#{variant.blob.key}?"
transformations = variant.variation.transformations
url += "format=#{transformations[:format]}&" if transformations.has_key? :format
url += "quality=#{transformations[:quality]}&" if transformations.has_key? :quality
def transformations
@transformations ||= variant.variation.transformations
end

def get_quality
if transformations.has_key? :quality
warn "[DEPRECATION] kamifusen: `variant(quality:)` is deprecated. Please use `variant(saver: { quality: })` instead."
return transformations[:quality]
end
transformations.dig(:saver, :quality)
end

def get_resize_width
width = nil
if transformations.has_key? :resize
resize = transformations[:resize]
# 100>
# resize: "100>"
if '>'.in? resize
warn "[DEPRECATION] kamifusen: `resize(\"\#{width}>\")` transformation is deprecated. Please use `resize_to_limit(width, nil)` instead."
width = resize.split('>').first.to_i
url += "width=#{width}&"
end
elsif transformations.has_key? :resize_to_limit
# resize_to_limit: [100, nil]
width = transformations[:resize_to_limit].first.to_i
end
width
end

def keycdn_url
url = "#{Kamifusen.keycdn}/#{variant.blob.key}?"
url += "format=#{transformations[:format]}&" if transformations.has_key? :format

width = get_resize_width
url += "width=#{width}" unless width.nil?

quality = get_quality
url += "quality=#{quality}&" unless quality.nil?

url
end

Expand Down

0 comments on commit c50ec1d

Please sign in to comment.