Remove HeifToJPEG filter; it has problems

This commit is contained in:
Mark Felder 2023-11-16 17:02:35 -05:00
parent d9e32481ad
commit 2bfad9b130
3 changed files with 0 additions and 74 deletions

View file

@ -1,36 +0,0 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Upload.Filter.HeifToJpeg do
@behaviour Pleroma.Upload.Filter
alias Pleroma.Upload
alias Vix.Vips.Operation
@type conversion :: action :: String.t() | {action :: String.t(), opts :: String.t()}
@type conversions :: conversion() | [conversion()]
@spec filter(Pleroma.Upload.t()) :: {:ok, :atom} | {:error, String.t()}
def filter(%Pleroma.Upload{content_type: "image/avif"} = upload), do: apply_filter(upload)
def filter(%Pleroma.Upload{content_type: "image/heic"} = upload), do: apply_filter(upload)
def filter(%Pleroma.Upload{content_type: "image/heif"} = upload), do: apply_filter(upload)
def filter(_), do: {:ok, :noop}
defp apply_filter(%Pleroma.Upload{name: name, path: path, tempfile: tempfile} = upload) do
ext = String.split(path, ".") |> List.last()
try do
name = name |> String.replace_suffix(ext, "jpg")
path = path |> String.replace_suffix(ext, "jpg")
{:ok, {vixdata, _vixflags}} = Operation.heifload(tempfile)
{:ok, jpegdata} = Operation.jpegsave_buffer(vixdata)
:ok = File.write(tempfile, jpegdata)
{:ok, :filtered, %Upload{upload | name: name, path: path, content_type: "image/jpeg"}}
rescue
e in ErlangError ->
{:error, "#{__MODULE__}: #{inspect(e)}"}
end
end
end

Binary file not shown.

View file

@ -1,38 +0,0 @@
# 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