mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 17:51:16 +08:00
DEV: Remove gifsicle dependency (#10357)
Dependency on gifsicle, allow_animated_avatars and allow_animated_thumbnails site settings were all removed. Animated GIF images are still allowed, but the generated optimized images are no longer animated for those (which were used for avatars and thumbnails). The added 'animated' is populated by extracting information using FastImage. This field was used to selectively reoptimize old animations. This process happens in the background.
This commit is contained in:
@ -126,6 +126,7 @@ class UploadCreator
|
||||
if is_image
|
||||
@upload.thumbnail_width, @upload.thumbnail_height = ImageSizer.resize(*@image_info.size)
|
||||
@upload.width, @upload.height = @image_info.size
|
||||
@upload.animated = FastImage.animated?(@file)
|
||||
end
|
||||
|
||||
add_metadata!
|
||||
@ -279,7 +280,6 @@ class UploadCreator
|
||||
from,
|
||||
to,
|
||||
scale,
|
||||
allow_animation: allow_animation,
|
||||
scale_image: true,
|
||||
raise_on_error: true
|
||||
)
|
||||
@ -351,17 +351,17 @@ class UploadCreator
|
||||
case @opts[:type]
|
||||
when "avatar"
|
||||
width = height = Discourse.avatar_sizes.max
|
||||
OptimizedImage.resize(@file.path, @file.path, width, height, filename: filename_with_correct_ext, allow_animation: allow_animation)
|
||||
OptimizedImage.resize(@file.path, @file.path, width, height, filename: filename_with_correct_ext)
|
||||
when "profile_background"
|
||||
max_width = 850 * max_pixel_ratio
|
||||
width, height = ImageSizer.resize(@image_info.size[0], @image_info.size[1], max_width: max_width, max_height: max_width)
|
||||
OptimizedImage.downsize(@file.path, @file.path, "#{width}x#{height}\>", filename: filename_with_correct_ext, allow_animation: allow_animation)
|
||||
OptimizedImage.downsize(@file.path, @file.path, "#{width}x#{height}\>", filename: filename_with_correct_ext)
|
||||
when "card_background"
|
||||
max_width = 590 * max_pixel_ratio
|
||||
width, height = ImageSizer.resize(@image_info.size[0], @image_info.size[1], max_width: max_width, max_height: max_width)
|
||||
OptimizedImage.downsize(@file.path, @file.path, "#{width}x#{height}\>", filename: filename_with_correct_ext, allow_animation: allow_animation)
|
||||
OptimizedImage.downsize(@file.path, @file.path, "#{width}x#{height}\>", filename: filename_with_correct_ext)
|
||||
when "custom_emoji"
|
||||
OptimizedImage.downsize(@file.path, @file.path, "100x100\>", filename: filename_with_correct_ext, allow_animation: allow_animation)
|
||||
OptimizedImage.downsize(@file.path, @file.path, "100x100\>", filename: filename_with_correct_ext)
|
||||
end
|
||||
|
||||
extract_image_info!
|
||||
@ -401,10 +401,6 @@ class UploadCreator
|
||||
@image_info.size&.reduce(:*).to_i
|
||||
end
|
||||
|
||||
def allow_animation
|
||||
@allow_animation ||= @opts[:type] == "avatar" ? SiteSetting.allow_animated_avatars : SiteSetting.allow_animated_thumbnails
|
||||
end
|
||||
|
||||
def svg_allowlist_xpath
|
||||
@@svg_allowlist_xpath ||= "//*[#{ALLOWED_SVG_ELEMENTS.map { |e| "name()!='#{e}'" }.join(" and ") }]"
|
||||
end
|
||||
|
Reference in New Issue
Block a user