posts: remove cropped thumbnails.
This commit is contained in:
@@ -181,17 +181,6 @@ class MediaFile
|
|||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
# Return a cropped preview version of the file, sized to fit exactly within
|
|
||||||
# the given width and height.
|
|
||||||
#
|
|
||||||
# @param width [Integer] the width of the cropped image
|
|
||||||
# @param height [Integer] the height of the cropped image
|
|
||||||
# @param options [Hash] extra options when generating the preview
|
|
||||||
# @return [MediaFile] a cropped preview file
|
|
||||||
def crop(width, height, **options)
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
|
|
||||||
def attributes
|
def attributes
|
||||||
{
|
{
|
||||||
path: path,
|
path: path,
|
||||||
|
|||||||
@@ -92,10 +92,6 @@ class MediaFile::Image < MediaFile
|
|||||||
resize(w, h, size: :force, **options)
|
resize(w, h, size: :force, **options)
|
||||||
end
|
end
|
||||||
|
|
||||||
def crop(max_width, max_height, **options)
|
|
||||||
resize(max_width, max_height, crop: :attention, **options)
|
|
||||||
end
|
|
||||||
|
|
||||||
def preview_frame
|
def preview_frame
|
||||||
if is_animated?
|
if is_animated?
|
||||||
FFmpeg.new(file).smart_video_preview
|
FFmpeg.new(file).smart_video_preview
|
||||||
|
|||||||
@@ -30,10 +30,6 @@ class MediaFile::Ugoira < MediaFile
|
|||||||
preview_frame.preview(width, height, **options)
|
preview_frame.preview(width, height, **options)
|
||||||
end
|
end
|
||||||
|
|
||||||
def crop(width, height)
|
|
||||||
preview_frame.crop(width, height)
|
|
||||||
end
|
|
||||||
|
|
||||||
def duration
|
def duration
|
||||||
(frame_delays.sum / 1000.0)
|
(frame_delays.sum / 1000.0)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -15,10 +15,6 @@ class MediaFile::Video < MediaFile
|
|||||||
preview_frame.preview(max_width, max_height, **options)
|
preview_frame.preview(max_width, max_height, **options)
|
||||||
end
|
end
|
||||||
|
|
||||||
def crop(max_width, max_height)
|
|
||||||
preview_frame.crop(max_width, max_height)
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def video
|
def video
|
||||||
|
|||||||
@@ -84,7 +84,6 @@ class UploadService
|
|||||||
|
|
||||||
def convert_to_post(upload)
|
def convert_to_post(upload)
|
||||||
Post.new.tap do |p|
|
Post.new.tap do |p|
|
||||||
p.has_cropped = true
|
|
||||||
p.tag_string = upload.tag_string
|
p.tag_string = upload.tag_string
|
||||||
p.md5 = upload.md5
|
p.md5 = upload.md5
|
||||||
p.file_ext = upload.file_ext
|
p.file_ext = upload.file_ext
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
class MediaAsset < ApplicationRecord
|
class MediaAsset < ApplicationRecord
|
||||||
class Error < StandardError; end
|
class Error < StandardError; end
|
||||||
|
|
||||||
VARIANTS = %i[preview crop 180x180 360x360 720x720 sample original]
|
VARIANTS = %i[preview 180x180 360x360 720x720 sample original]
|
||||||
ENABLE_SEO_POST_URLS = Danbooru.config.enable_seo_post_urls
|
ENABLE_SEO_POST_URLS = Danbooru.config.enable_seo_post_urls
|
||||||
LARGE_IMAGE_WIDTH = Danbooru.config.large_image_width
|
LARGE_IMAGE_WIDTH = Danbooru.config.large_image_width
|
||||||
STORAGE_SERVICE = Danbooru.config.storage_manager
|
STORAGE_SERVICE = Danbooru.config.storage_manager
|
||||||
@@ -71,8 +71,6 @@ class MediaAsset < ApplicationRecord
|
|||||||
media_file.preview(width, height, format: :jpeg, quality: 85)
|
media_file.preview(width, height, format: :jpeg, quality: 85)
|
||||||
in :"720x720"
|
in :"720x720"
|
||||||
media_file.preview(width, height, format: :webp, quality: 75)
|
media_file.preview(width, height, format: :webp, quality: 75)
|
||||||
in :crop
|
|
||||||
media_file.crop(width, height)
|
|
||||||
in :sample if media_asset.is_ugoira?
|
in :sample if media_asset.is_ugoira?
|
||||||
media_file.convert
|
media_file.convert
|
||||||
in :sample if media_asset.is_static_image?
|
in :sample if media_asset.is_static_image?
|
||||||
@@ -87,7 +85,7 @@ class MediaAsset < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def file_path(slug = "")
|
def file_path(slug = "")
|
||||||
if variant.in?(%i[preview crop 180x180 360x360 720x720]) && media_asset.is_flash?
|
if variant.in?(%i[preview 180x180 360x360 720x720]) && media_asset.is_flash?
|
||||||
"/images/download-preview.png"
|
"/images/download-preview.png"
|
||||||
else
|
else
|
||||||
slug = "__#{slug}__" if slug.present?
|
slug = "__#{slug}__" if slug.present?
|
||||||
@@ -109,7 +107,7 @@ class MediaAsset < ApplicationRecord
|
|||||||
# The file extension of this variant.
|
# The file extension of this variant.
|
||||||
def file_ext
|
def file_ext
|
||||||
case variant
|
case variant
|
||||||
when :preview, :crop, :"180x180", :"360x360"
|
when :preview, :"180x180", :"360x360"
|
||||||
"jpg"
|
"jpg"
|
||||||
when :"720x720"
|
when :"720x720"
|
||||||
"webp"
|
"webp"
|
||||||
@@ -124,8 +122,6 @@ class MediaAsset < ApplicationRecord
|
|||||||
case variant
|
case variant
|
||||||
when :preview
|
when :preview
|
||||||
[150, 150]
|
[150, 150]
|
||||||
when :crop
|
|
||||||
[150, 150]
|
|
||||||
when :"180x180"
|
when :"180x180"
|
||||||
[180, 180]
|
[180, 180]
|
||||||
when :"360x360"
|
when :"360x360"
|
||||||
@@ -140,12 +136,7 @@ class MediaAsset < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def dimensions
|
def dimensions
|
||||||
case variant
|
MediaFile.scale_dimensions(media_asset.image_width, media_asset.image_height, max_dimensions[0], max_dimensions[1])
|
||||||
when :crop
|
|
||||||
max_dimensions
|
|
||||||
else
|
|
||||||
MediaFile.scale_dimensions(media_asset.image_width, media_asset.image_height, max_dimensions[0], max_dimensions[1])
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def width
|
def width
|
||||||
@@ -160,8 +151,6 @@ class MediaAsset < ApplicationRecord
|
|||||||
case variant
|
case variant
|
||||||
when :preview
|
when :preview
|
||||||
true
|
true
|
||||||
when :crop
|
|
||||||
true
|
|
||||||
when :"180x180"
|
when :"180x180"
|
||||||
true
|
true
|
||||||
when :"360x360"
|
when :"360x360"
|
||||||
|
|||||||
@@ -117,10 +117,6 @@ class Post < ApplicationRecord
|
|||||||
media_asset.variant(:preview).file_url
|
media_asset.variant(:preview).file_url
|
||||||
end
|
end
|
||||||
|
|
||||||
def crop_file_url
|
|
||||||
media_asset.variant(:crop).file_url
|
|
||||||
end
|
|
||||||
|
|
||||||
def open_graph_image_url
|
def open_graph_image_url
|
||||||
if is_image?
|
if is_image?
|
||||||
if has_large?
|
if has_large?
|
||||||
@@ -1183,7 +1179,7 @@ class Post < ApplicationRecord
|
|||||||
|
|
||||||
def purge_cached_urls!
|
def purge_cached_urls!
|
||||||
urls = [
|
urls = [
|
||||||
preview_file_url, crop_file_url, large_file_url, file_url,
|
preview_file_url, large_file_url, file_url,
|
||||||
tagged_file_url(tagged_filenames: true), tagged_large_file_url(tagged_filenames: true),
|
tagged_file_url(tagged_filenames: true), tagged_large_file_url(tagged_filenames: true),
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1286,7 +1282,7 @@ class Post < ApplicationRecord
|
|||||||
include PixivMethods
|
include PixivMethods
|
||||||
include ValidationMethods
|
include ValidationMethods
|
||||||
|
|
||||||
has_bit_flags ["has_embedded_notes", "has_cropped"]
|
has_bit_flags ["has_embedded_notes"]
|
||||||
|
|
||||||
def safeblocked?
|
def safeblocked?
|
||||||
CurrentUser.safe_mode? && (rating != "s" || Danbooru.config.safe_mode_restricted_tags.any? { |tag| tag.in?(tag_array) })
|
CurrentUser.safe_mode? && (rating != "s" || Danbooru.config.safe_mode_restricted_tags.any? { |tag| tag.in?(tag_array) })
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class UserPolicy < ApplicationPolicy
|
|||||||
new_post_navigation_layout enable_private_favorites
|
new_post_navigation_layout enable_private_favorites
|
||||||
hide_deleted_posts style_usernames show_deleted_children
|
hide_deleted_posts style_usernames show_deleted_children
|
||||||
disable_categorized_saved_searches disable_tagged_filenames
|
disable_categorized_saved_searches disable_tagged_filenames
|
||||||
disable_cropped_thumbnails disable_mobile_gestures enable_safe_mode
|
disable_mobile_gestures enable_safe_mode
|
||||||
enable_desktop_mode disable_post_tooltips
|
enable_desktop_mode disable_post_tooltips
|
||||||
].compact
|
].compact
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -98,7 +98,6 @@ namespace :danbooru do
|
|||||||
|
|
||||||
posts.parallel_each do |post|
|
posts.parallel_each do |post|
|
||||||
sm.store_file(post.file(:preview), post, :preview) if post.has_preview?
|
sm.store_file(post.file(:preview), post, :preview) if post.has_preview?
|
||||||
sm.store_file(post.file(:crop), post, :crop) if post.has_cropped?
|
|
||||||
sm.store_file(post.file(:sample), post, :sample) if post.has_large?
|
sm.store_file(post.file(:sample), post, :sample) if post.has_large?
|
||||||
sm.store_file(post.file(:original), post, :original)
|
sm.store_file(post.file(:original), post, :original)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -140,20 +140,6 @@ class MediaFileTest < ActiveSupport::TestCase
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "#crop" do
|
|
||||||
should "generate a cropped preview image" do
|
|
||||||
assert_equal([150, 150], MediaFile.open("test/files/test.jpg").crop(150, 150).dimensions)
|
|
||||||
assert_equal([150, 150], MediaFile.open("test/files/test.png").crop(150, 150).dimensions)
|
|
||||||
assert_equal([150, 150], MediaFile.open("test/files/test.gif").crop(150, 150).dimensions)
|
|
||||||
end
|
|
||||||
|
|
||||||
should "generate a cropped preview image for a video" do
|
|
||||||
skip unless MediaFile.videos_enabled?
|
|
||||||
assert_equal([150, 150], MediaFile.open("test/files/test-512x512.webm").crop(150, 150).dimensions)
|
|
||||||
assert_equal([150, 150], MediaFile.open("test/files/test-300x300.mp4").crop(150, 150).dimensions)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "for a ugoira" do
|
context "for a ugoira" do
|
||||||
setup do
|
setup do
|
||||||
skip unless MediaFile::Ugoira.videos_enabled?
|
skip unless MediaFile::Ugoira.videos_enabled?
|
||||||
@@ -163,7 +149,6 @@ class MediaFileTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
should "generate a preview" do
|
should "generate a preview" do
|
||||||
assert_equal([60, 60], @ugoira.preview(150, 150).dimensions)
|
assert_equal([60, 60], @ugoira.preview(150, 150).dimensions)
|
||||||
assert_equal([150, 150], @ugoira.crop(150, 150).dimensions)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
should "get the duration" do
|
should "get the duration" do
|
||||||
|
|||||||
Reference in New Issue
Block a user