add cropped support for video uploads

This commit is contained in:
Albert Yi
2018-07-03 16:37:53 -07:00
parent 7f895bd91f
commit 99807580d5
2 changed files with 37 additions and 7 deletions

View File

@@ -130,7 +130,7 @@ class UploadService
def self.generate_resizes(file, upload)
if upload.is_video?
video = FFMPEG::Movie.new(file.path)
crop_file = generate_video_preview_for(video, Danbooru.config.small_image_width, Danbooru.config.small_image_width)
crop_file = generate_video_crop_for(video, Danbooru.config.small_image_width)
preview_file = generate_video_preview_for(video, Danbooru.config.small_image_width, Danbooru.config.small_image_width)
elsif upload.is_ugoira?
@@ -149,6 +149,14 @@ class UploadService
[preview_file, crop_file, sample_file]
end
def self.generate_video_crop_for(video, width)
vp = Tempfile.new(["video-preview", ".jpg"], binmode: true)
video.screenshot(vp.path, {:seek_time => 0, :resolution => "#{video.width}x#{video.height}"})
crop = DanbooruImageResizer.crop(vp, width, 85)
vp.close
return crop
end
def self.generate_video_preview_for(video, width, height)
dimension_ratio = video.width.to_f / video.height
if dimension_ratio > 1