summaryrefslogtreecommitdiff
path: root/lib/Katana/Image/Elem.rakumod
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2022-04-20 10:12:14 +0100
committerPaul Buetow <paul@buetow.org>2022-04-20 10:12:14 +0100
commit6b0d4ee051f650b46af7ec50acf1122d44088fb5 (patch)
tree6f44c35dcce84fac1d242ef356d3d06545678e80 /lib/Katana/Image/Elem.rakumod
parentc6a252b79db57f3480221cf25213fb8c0993ac3a (diff)
modularize more
Diffstat (limited to 'lib/Katana/Image/Elem.rakumod')
-rw-r--r--lib/Katana/Image/Elem.rakumod43
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/Katana/Image/Elem.rakumod b/lib/Katana/Image/Elem.rakumod
new file mode 100644
index 0000000..3109e82
--- /dev/null
+++ b/lib/Katana/Image/Elem.rakumod
@@ -0,0 +1,43 @@
+use v6.d;
+
+use Katana::Exec::Command;
+
+unit module Katana::Image:api<1>;
+
+class Elem is export {
+ has Str $.basename;
+ has Str $!source;
+ has Str $!dist-dir;
+ has Str $.camera;
+
+ submethod BUILD(IO::Path :$source, Str :$dist-dir) {
+ $!basename = $source.basename;
+ $!source = $source.path;
+ $!dist-dir = $dist-dir;
+ }
+
+ method generate(Int :$thumb-geometry, Str :$bg-blur) {
+ my $thumb = "$!dist-dir/thumb/{$.basename}";
+ ⁉ [|<convert -auto-orient -geometry>, $thumb-geometry, $!source, $thumb];
+
+ my $blur = "$!dist-dir/blur/{$.basename}";
+ ⁉ [|<convert -flip -geometry>, $thumb-geometry/4, '-blur', $bg-blur, $thumb, $blur];
+
+ my $large = "$!dist-dir/large/{$.basename}";
+ ⁉ ['cp', $!source, $large];
+ }
+
+ method get-camera-model {
+ my %exif = read-exif-info "$!dist-dir/large/{$.basename}";
+ my $make = %exif<Make> ?? %exif<Make> !! '';
+ my $model = %exif{'Camera Model Name'} ?? %exif{'Camera Model Name'} !! '';
+ $model ~~ s/$make //; # Don't stotter
+ $model = 'Unknown camera' if $model eq '';
+ $!camera = "$make $model".trim;
+ }
+
+ method tag(Str $class) {
+ "<img class='{$class}' src='./{$class}/{$.basename}' />"
+ }
+}
+