From d3cf505b42cd2f1a073dbaa28ff0224e30445efb Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 15 Feb 2021 21:20:48 +0000 Subject: Oopsy --- lib/pleroma/upload/filter/heif_to_jpeg.ex | 47 ++++++++++++++++++++++++++++++ lib/pleroma/upload/filter/heif_to_jpeg.ex. | 47 ------------------------------ 2 files changed, 47 insertions(+), 47 deletions(-) create mode 100644 lib/pleroma/upload/filter/heif_to_jpeg.ex delete mode 100644 lib/pleroma/upload/filter/heif_to_jpeg.ex. diff --git a/lib/pleroma/upload/filter/heif_to_jpeg.ex b/lib/pleroma/upload/filter/heif_to_jpeg.ex new file mode 100644 index 000000000..912bd59e1 --- /dev/null +++ b/lib/pleroma/upload/filter/heif_to_jpeg.ex @@ -0,0 +1,47 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Upload.Filter.HeifToJpeg do + @behaviour Pleroma.Upload.Filter + alias Pleroma.Upload + + @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{name: name, path: path, tempfile: tempfile, content_type: "image/heic"} = + upload + ) do + try do + name = name |> String.replace_suffix(".heic", ".jpg") + path = path |> String.replace_suffix(".heic", ".jpg") + convert(tempfile) + + {:ok, :filtered, %Upload{upload | name: name, path: path, content_type: "image/jpeg"}} + rescue + e in ErlangError -> + {:error, "mogrify error: #{inspect(e)}"} + end + end + + def filter(_), do: {:ok, :noop} + + def convert(tempfile) do + # cannot save in place when changing format, so we have to use a tmp file + # https://github.com/route/mogrify/issues/77 + # also need a valid extension or it gets confused + + original = tempfile <> ".heic" + File.rename!(tempfile, original) + + %{path: converted} = + original + |> Mogrify.open() + |> Mogrify.format("jpg") + |> Mogrify.save() + + File.rename!(converted, tempfile) + end +end diff --git a/lib/pleroma/upload/filter/heif_to_jpeg.ex. b/lib/pleroma/upload/filter/heif_to_jpeg.ex. deleted file mode 100644 index 912bd59e1..000000000 --- a/lib/pleroma/upload/filter/heif_to_jpeg.ex. +++ /dev/null @@ -1,47 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2021 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Upload.Filter.HeifToJpeg do - @behaviour Pleroma.Upload.Filter - alias Pleroma.Upload - - @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{name: name, path: path, tempfile: tempfile, content_type: "image/heic"} = - upload - ) do - try do - name = name |> String.replace_suffix(".heic", ".jpg") - path = path |> String.replace_suffix(".heic", ".jpg") - convert(tempfile) - - {:ok, :filtered, %Upload{upload | name: name, path: path, content_type: "image/jpeg"}} - rescue - e in ErlangError -> - {:error, "mogrify error: #{inspect(e)}"} - end - end - - def filter(_), do: {:ok, :noop} - - def convert(tempfile) do - # cannot save in place when changing format, so we have to use a tmp file - # https://github.com/route/mogrify/issues/77 - # also need a valid extension or it gets confused - - original = tempfile <> ".heic" - File.rename!(tempfile, original) - - %{path: converted} = - original - |> Mogrify.open() - |> Mogrify.format("jpg") - |> Mogrify.save() - - File.rename!(converted, tempfile) - end -end -- cgit v1.2.3