From: Christopher Coté Date: Sat, 4 Nov 2023 13:12:18 +0000 (-0400) Subject: new image, test thumbnails X-Git-Url: http://git.entropealabs.com/?a=commitdiff_plain;h=439fd49e231e05835d0dd2cc9c119ab117ccb837;p=photography.git new image, test thumbnails --- diff --git a/media/database.db b/media/database.db index 20fc448e..45dee61c 100644 Binary files a/media/database.db and b/media/database.db differ diff --git a/media/database.db-shm b/media/database.db-shm index 0f24ebad..e4351db9 100644 Binary files a/media/database.db-shm and b/media/database.db-shm differ diff --git a/media/database.db-wal b/media/database.db-wal index b30facea..5263ed89 100644 Binary files a/media/database.db-wal and b/media/database.db-wal differ diff --git a/media/image_metadata.exs b/media/image_metadata.exs index 57722c4d..34a7d10e 100644 --- a/media/image_metadata.exs +++ b/media/image_metadata.exs @@ -6,7 +6,8 @@ Mix.install( {:hackney, "~> 1.18"}, {:jason, "~> 1.3"}, {:ecto_sqlite3, "~> 0.12"}, - {:sweet_xml, "~> 0.6"} + {:sweet_xml, "~> 0.6"}, + {:image, "~> 0.38.3"} ], config: [ ex_aws: [ @@ -23,7 +24,7 @@ defmodule Repo do use Ecto.Repo, otp_app: :images, adapter: Ecto.Adapters.SQLite3 end -defmodule Image do +defmodule Media.Image do use Ecto.Schema import Ecto.Changeset @@ -61,6 +62,11 @@ defmodule Image do den = floor(1 / time) "1#{den}\"" end + + def thumb_path(%{path: path}) do + [s, ext] = String.split(path, ".") + "#{s}_thumb.#{ext}" + end end defmodule Video do @@ -319,13 +325,13 @@ defmodule Images do {hash, file_path} = get_path(path, datetime) i = - case Repo.one(from(i in Image, where: i.original_path == ^path)) do - nil -> %Image{uploaded: false} + case Repo.one(from(i in Media.Image, where: i.original_path == ^path)) do + nil -> %Media.Image{uploaded: false} im -> im end cs = - Image.changeset(i, %{ + Media.Image.changeset(i, %{ datetime: datetime, flash: data.exif.flash, contrast: data.exif.contrast, @@ -366,6 +372,19 @@ defmodule Images do uf = fn %{original_path: src_path, path: dest_path} = record -> data = File.read!(src_path) + {:ok, thumb} = Image.from_binary(data) + {:ok, thumb} = Image.thumbnail(thumb, 400, fit: :cover) + {:ok, thumb} = Image.write(thumb, :memory, suffix: ".jpg", minimize_file_size: true) + thumb_path = Media.Image.thumb_path(record) + + bucket + |> ExAws.S3.put_object(thumb_path, thumb, + content_type: "image/jpeg", + acl: :public_read + ) + |> IO.inspect() + |> ExAws.request(region: region) + |> IO.inspect() bucket |> ExAws.S3.put_object(dest_path, data, @@ -384,7 +403,7 @@ defmodule Images do end def handle_upload_result({:ok, _}, image) do - cs = Image.changeset(image, %{uploaded: true}) + cs = Media.Image.changeset(image, %{uploaded: true}) Repo.update(cs) end @@ -496,7 +515,7 @@ defmodule Images do """ -

ƒ #{i.aperture} | #{Image.secs(i.exposure_time)} | #{i.focal_length}mm | ISO#{i.iso}

+

ƒ #{i.aperture} | #{Media.Image.secs(i.exposure_time)} | #{i.focal_length}mm | ISO#{i.iso}

#{tags}

""" end diff --git a/media/templates/index.html.eex b/media/templates/index.html.eex index c8fc1fc9..f1f742e1 100644 --- a/media/templates/index.html.eex +++ b/media/templates/index.html.eex @@ -6,7 +6,7 @@ - + @@ -39,7 +39,7 @@ <% d = DateTime.add(i.datetime, -4 * 60 * 60) %> <%= d |> DateTime.to_string() |> String.replace_suffix("Z", "") %> - ƒ <%= i.aperture %> | <%= Image.secs(i.exposure_time) %> | <%= i.focal_length %>mm | ISO<%= i.iso %> + ƒ <%= i.aperture %> | <%= Media.Image.secs(i.exposure_time) %> | <%= i.focal_length %>mm | ISO<%= i.iso %> <% end %> diff --git a/www/index.html b/www/index.html index 19f38584..4079d08a 100644 --- a/www/index.html +++ b/www/index.html @@ -6,7 +6,7 @@ - + @@ -392,6 +392,22 @@ ƒ 4.5 | ∞ | 35.0mm | ISO100 +
+ + + + + + 2023-10-08 07:31:34 + ƒ 4.5 | ∞ | 35.0mm | ISO100 +
+
@@ -546,20 +562,6 @@ ƒ 8.0 | 11000" | 70.0mm | ISO100
-
- - - - - - 2023-09-30 16:45:07 - ƒ 2.8 | ∞ | 145.0mm | ISO100 -
-