add cropped support for video uploads
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -162,9 +162,14 @@ class UploadServiceTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
should "generate a preview and a video" do
|
||||
preview, sample = subject.generate_resizes(@file, @upload)
|
||||
preview, crop, sample = subject.generate_resizes(@file, @upload)
|
||||
assert_operator(File.size(preview.path), :>, 0)
|
||||
assert_operator(File.size(crop.path), :>, 0)
|
||||
assert_operator(File.size(sample.path), :>, 0)
|
||||
assert_equal(60, ImageSpec.new(preview.path).width)
|
||||
assert_equal(60, ImageSpec.new(preview.path).height)
|
||||
assert_equal(150, ImageSpec.new(crop.path).width)
|
||||
assert_equal(150, ImageSpec.new(crop.path).height)
|
||||
preview.close
|
||||
preview.unlink
|
||||
sample.close
|
||||
@@ -186,10 +191,17 @@ class UploadServiceTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
should "generate a video" do
|
||||
preview, sample = subject.generate_resizes(@file, @upload)
|
||||
preview, crop, sample = subject.generate_resizes(@file, @upload)
|
||||
assert_operator(File.size(preview.path), :>, 0)
|
||||
assert_operator(File.size(crop.path), :>, 0)
|
||||
assert_equal(150, ImageSpec.new(preview.path).width)
|
||||
assert_equal(150, ImageSpec.new(preview.path).height)
|
||||
assert_equal(150, ImageSpec.new(crop.path).width)
|
||||
assert_equal(150, ImageSpec.new(crop.path).height)
|
||||
preview.close
|
||||
preview.unlink
|
||||
crop.close
|
||||
crop.unlink
|
||||
end
|
||||
end
|
||||
|
||||
@@ -202,10 +214,17 @@ class UploadServiceTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
should "generate a video" do
|
||||
preview, sample = subject.generate_resizes(@file, @upload)
|
||||
preview, crop, sample = subject.generate_resizes(@file, @upload)
|
||||
assert_operator(File.size(preview.path), :>, 0)
|
||||
assert_operator(File.size(crop.path), :>, 0)
|
||||
assert_equal(150, ImageSpec.new(preview.path).width)
|
||||
assert_equal(150, ImageSpec.new(preview.path).height)
|
||||
assert_equal(150, ImageSpec.new(crop.path).width)
|
||||
assert_equal(150, ImageSpec.new(crop.path).height)
|
||||
preview.close
|
||||
preview.unlink
|
||||
crop.close
|
||||
crop.unlink
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -230,8 +249,9 @@ class UploadServiceTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
should "generate a preview" do
|
||||
preview, sample = subject.generate_resizes(@file, @upload)
|
||||
preview, crop, sample = subject.generate_resizes(@file, @upload)
|
||||
assert_operator(File.size(preview.path), :>, 0)
|
||||
assert_operator(File.size(crop.path), :>, 0)
|
||||
assert_operator(File.size(sample.path), :>, 0)
|
||||
preview.close
|
||||
preview.unlink
|
||||
@@ -246,8 +266,9 @@ class UploadServiceTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
should "generate a preview" do
|
||||
preview, sample = subject.generate_resizes(@file, @upload)
|
||||
preview, crop, sample = subject.generate_resizes(@file, @upload)
|
||||
assert_operator(File.size(preview.path), :>, 0)
|
||||
assert_operator(File.size(crop.path), :>, 0)
|
||||
assert_operator(File.size(sample.path), :>, 0)
|
||||
preview.close
|
||||
preview.unlink
|
||||
@@ -262,8 +283,9 @@ class UploadServiceTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
should "generate a preview" do
|
||||
preview, sample = subject.generate_resizes(@file, @upload)
|
||||
preview, crop, sample = subject.generate_resizes(@file, @upload)
|
||||
assert_operator(File.size(preview.path), :>, 0)
|
||||
assert_operator(File.size(crop.path), :>, 0)
|
||||
assert_operator(File.size(sample.path), :>, 0)
|
||||
preview.close
|
||||
preview.unlink
|
||||
|
||||
Reference in New Issue
Block a user