Add Pleroma.Upload.Filter.HeifToJpeg based on vips

This commit is contained in:
Mark Felder 2022-11-10 11:07:49 -05:00
commit 481b6ac0d5
4 changed files with 75 additions and 0 deletions

BIN
test/fixtures/image.heic vendored Normal file

Binary file not shown.

View file

@ -0,0 +1,38 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Upload.Filter.HeifToJpegTest do
use Pleroma.DataCase, async: true
alias Pleroma.Upload.Filter
test "apply HeicToJpeg filter" do
File.cp!(
"test/fixtures/image.heic",
"test/fixtures/heictmp"
)
upload = %Pleroma.Upload{
name: "image.heic",
content_type: "image/heic",
path: Path.absname("test/fixtures/image.heic"),
tempfile: Path.absname("test/fixtures/heictmp")
}
{:ok, :filtered, result} = Filter.HeifToJpeg.filter(upload)
assert result.content_type == "image/jpeg"
assert result.name == "image.jpg"
assert String.ends_with?(result.path, "jpg")
assert {:ok,
%Majic.Result{
content:
"JPEG image data, JFIF standard 1.02, resolution (DPI), density 96x96, segment length 16, progressive, precision 8, 1024x768, components 3",
encoding: "binary",
mime_type: "image/jpeg"
}} == Majic.perform(result.path, pool: Pleroma.MajicPool)
on_exit(fn -> File.rm!("test/fixtures/heictmp") end)
end
end