chiya/lib/chiya_web/uploaders/note_image.ex

58 lines
1.7 KiB
Elixir
Raw Permalink Normal View History

2023-03-23 08:17:47 +01:00
defmodule ChiyaWeb.Uploaders.NoteImage do
2023-03-07 19:57:37 +01:00
use Waffle.Definition
use Waffle.Ecto.Definition
# Include ecto support (requires package waffle_ecto installed):
# use Waffle.Ecto.Definition
2023-03-09 07:28:06 +01:00
@versions [:original, :full, :full_dithered, :thumb, :thumb_dithered]
2023-03-07 19:57:37 +01:00
# Whitelist file extensions:
2023-03-09 07:28:06 +01:00
def validate({_file, _}) do
# _file_extension = file.file_name |> Path.extname() |> String.downcase()
2023-03-07 19:57:37 +01:00
# case Enum.member?(~w(.jpg .jpeg .gif .png), file_extension) do
# true -> :ok
# false -> {:error, "invalid file type"}
# end
# filetype will be validated in liveview
:ok
end
2023-03-09 07:28:06 +01:00
def transform(:full, _) do
{:convert, "-strip -resize 1500000@ -gravity center -format png", :png}
end
2023-03-07 19:57:37 +01:00
# Define a resize transformation:
2023-03-09 07:28:06 +01:00
def transform(:full_dithered, _) do
2023-03-07 19:57:37 +01:00
{:convert, "-strip -resize 1500000@ -colors 24 -dither FloydSteinberg -format png", :png}
end
# Define a thumbnail transformation:
def transform(:thumb, _) do
{:convert, "-strip -thumbnail 250x250^ -gravity center -extent 250x250 -format png", :png}
end
# Define a thumbnail transformation with dithering:
def transform(:thumb_dithered, _) do
{:convert,
"-strip -thumbnail 250x250^ -gravity center -extent 250x250 -colors 24 -dither FloydSteinberg -format png",
:png}
end
# Override the persisted filenames:
def filename(version, _) do
version
end
# Override the storage directory:
2023-03-09 07:28:06 +01:00
def storage_dir(_version, {_file, %{id: image_id, note_id: note_id}}) do
"uploads/note/#{note_id}/#{image_id}"
2023-03-07 19:57:37 +01:00
end
# Provide a default URL if there hasn't been a file uploaded
# def default_url(version, scope) do
# "/images/avatars/default_#{version}.png"
# end
end