jekyll-images 0.4.5 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/jekyll/filters/dzsave.rb +21 -8
- data/lib/jekyll/filters/height.rb +12 -3
- data/lib/jekyll/filters/max_zoom_level.rb +9 -1
- data/lib/jekyll/filters/thumbnail.rb +11 -3
- data/lib/jekyll/filters/width.rb +11 -3
- data/lib/jekyll/images/thumbnail.rb +3 -3
- data/lib/jekyll-images.rb +10 -5
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2952761bff8f6b73605856b37cec55d29815dffa4e27d23f9ac8d5a76e0f0e8b
|
4
|
+
data.tar.gz: 11cb41efcde66b9f99d02b34b481022b31c3a3a0a3331b1a40611534d687c4b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39dc59ad60dd74d50ca32285e9745f06472080398e34b162902192fbf3cde37daa69d16d468ca1920b758259ec16c41a785fd75444e4331b7d15b625b1dc833b
|
7
|
+
data.tar.gz: b0a812f12d2d3c47d5a44579899ff7e4bf82ad5a9755e3c109619ef29b4eb327ad7725fbbcafec114739d766bdd4dd1ddd10e348984d747bc0161841e05428e5
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -4,39 +4,52 @@ module Jekyll
|
|
4
4
|
module Filters
|
5
5
|
# Liquid filter for use in templates
|
6
6
|
module Dzsave
|
7
|
+
def self.jekyll_site=(site)
|
8
|
+
@@jekyll_site = site
|
9
|
+
end
|
10
|
+
|
11
|
+
def jekyll_site
|
12
|
+
@@jekyll_site
|
13
|
+
end
|
14
|
+
|
7
15
|
# Generates an image pyramid
|
8
16
|
#
|
9
17
|
# @see {https://www.libvips.org/API/current/Making-image-pyramids.md.html}
|
10
18
|
def dzsave(input, layout = 'google', tile_size = 256)
|
11
19
|
return input unless input
|
12
20
|
|
13
|
-
|
14
|
-
path = site.in_source_dir(input)
|
21
|
+
path = jekyll_site.in_source_dir(input)
|
15
22
|
|
16
23
|
unless ::File.exist?(path)
|
17
|
-
Jekyll.logger.warn "
|
24
|
+
Jekyll.logger.warn 'Dzsave:', "#{input} doesn't exist"
|
25
|
+
return input
|
26
|
+
end
|
27
|
+
|
28
|
+
image = Vips::Image.new_from_file(path, access: :sequential)
|
29
|
+
|
30
|
+
if [image.width, image.height].min < tile_size
|
31
|
+
Jekyll.logger.warn 'Dzsave:', "#{input} is smaller than tile size"
|
18
32
|
return input
|
19
33
|
end
|
20
34
|
|
21
35
|
dir = ::File.dirname(input)
|
22
36
|
previous_tiles = []
|
23
37
|
|
24
|
-
Dir.chdir(
|
38
|
+
Dir.chdir(jekyll_site.source) do
|
25
39
|
previous_tiles = Dir.glob(::File.join(dir, '*', '**', '*.jpg'))
|
26
40
|
end
|
27
41
|
|
28
|
-
image = Vips::Image.new_from_file(path, access: :sequential)
|
29
42
|
image.dzsave(dir, layout: layout, tile_size: tile_size)
|
30
43
|
|
31
|
-
Dir.chdir(
|
44
|
+
Dir.chdir(jekyll_site.source) do
|
32
45
|
(Dir.glob(::File.join(dir, '*', '**', '*.jpg')) - previous_tiles).each do |tile|
|
33
|
-
|
46
|
+
jekyll_site.static_files << Jekyll::StaticFile.new(jekyll_site, jekyll_site.source, ::File.dirname(tile), ::File.basename(tile))
|
34
47
|
end
|
35
48
|
end
|
36
49
|
|
37
50
|
"#{dir}/{z}/{y}/{x}.jpg"
|
38
51
|
rescue Vips::Error => e
|
39
|
-
Jekyll.logger.warn "Failed to process #{input}: #{e.message}"
|
52
|
+
Jekyll.logger.warn 'Dzsave:', "Failed to process #{input}: #{e.message}"
|
40
53
|
input
|
41
54
|
end
|
42
55
|
end
|
@@ -4,18 +4,27 @@ module Jekyll
|
|
4
4
|
module Filters
|
5
5
|
# Obtain image height
|
6
6
|
module Height
|
7
|
+
def self.jekyll_site=(site)
|
8
|
+
@@jekyll_site = site
|
9
|
+
end
|
10
|
+
|
11
|
+
def jekyll_site
|
12
|
+
@@jekyll_site
|
13
|
+
end
|
14
|
+
|
15
|
+
|
7
16
|
def height(input)
|
8
17
|
return unless input
|
9
|
-
path =
|
18
|
+
path = jekyll_site.in_source_dir input
|
10
19
|
|
11
20
|
unless ::File.exist? path
|
12
|
-
Jekyll.logger.warn "
|
21
|
+
Jekyll.logger.warn 'Height:', "#{input} doesn't exist"
|
13
22
|
return input
|
14
23
|
end
|
15
24
|
|
16
25
|
Jekyll::Images::Cache.cached_image(path).height
|
17
26
|
rescue Vips::Error => e
|
18
|
-
Jekyll.logger.warn "Failed to process #{input}: #{e.message}"
|
27
|
+
Jekyll.logger.warn 'Height:', "Failed to process #{input}: #{e.message}"
|
19
28
|
nil
|
20
29
|
end
|
21
30
|
end
|
@@ -4,6 +4,14 @@ module Jekyll
|
|
4
4
|
module Filters
|
5
5
|
# Maximum zoom level
|
6
6
|
module MaxZoomLevel
|
7
|
+
def self.jekyll_site=(site)
|
8
|
+
@@jekyll_site = site
|
9
|
+
end
|
10
|
+
|
11
|
+
def jekyll_site
|
12
|
+
@@jekyll_site
|
13
|
+
end
|
14
|
+
|
7
15
|
# Finds the maximum zoom level for an image
|
8
16
|
#
|
9
17
|
# @param :input [String]
|
@@ -11,7 +19,7 @@ module Jekyll
|
|
11
19
|
def max_zoom_level(input)
|
12
20
|
return input unless input
|
13
21
|
|
14
|
-
path = ::File.dirname(
|
22
|
+
path = ::File.dirname(jekyll_site.in_source_dir(input))
|
15
23
|
|
16
24
|
unless ::File.exist? path
|
17
25
|
Jekyll.logger.warn 'Max zoom level:', "File doesn't exist #{input}"
|
@@ -4,16 +4,24 @@ module Jekyll
|
|
4
4
|
module Filters
|
5
5
|
# Liquid filter for use in templates
|
6
6
|
module Thumbnail
|
7
|
+
def self.jekyll_site=(site)
|
8
|
+
@@jekyll_site = site
|
9
|
+
end
|
10
|
+
|
11
|
+
def jekyll_site
|
12
|
+
@@jekyll_site
|
13
|
+
end
|
14
|
+
|
7
15
|
# Generates a thumbnail and returns its alternate destination
|
8
16
|
def thumbnail(input, width = nil, height = nil, crop = nil, auto_rotate = nil)
|
9
17
|
return input unless input
|
10
18
|
return input if input.downcase.end_with? '.gif'
|
11
19
|
return input unless Jekyll.env == 'production'
|
12
20
|
|
13
|
-
path =
|
21
|
+
path = jekyll_site.in_source_dir input
|
14
22
|
|
15
23
|
unless ::File.exist? path
|
16
|
-
Jekyll.logger.warn "
|
24
|
+
Jekyll.logger.warn 'Thumbnail:', "#{input} doesn't exist"
|
17
25
|
return input
|
18
26
|
end
|
19
27
|
|
@@ -27,7 +35,7 @@ module Jekyll
|
|
27
35
|
|
28
36
|
thumb.url
|
29
37
|
rescue Vips::Error => e
|
30
|
-
Jekyll.logger.warn "Failed to process #{input}: #{e.message}"
|
38
|
+
Jekyll.logger.warn 'Thumbnail:', "Failed to process #{input}: #{e.message}"
|
31
39
|
input
|
32
40
|
end
|
33
41
|
end
|
data/lib/jekyll/filters/width.rb
CHANGED
@@ -4,18 +4,26 @@ module Jekyll
|
|
4
4
|
module Filters
|
5
5
|
# Obtain image width
|
6
6
|
module Width
|
7
|
+
def self.jekyll_site=(site)
|
8
|
+
@@jekyll_site = site
|
9
|
+
end
|
10
|
+
|
11
|
+
def jekyll_site
|
12
|
+
@@jekyll_site
|
13
|
+
end
|
14
|
+
|
7
15
|
def width(input)
|
8
16
|
return unless input
|
9
|
-
path =
|
17
|
+
path = jekyll_site.in_source_dir input
|
10
18
|
|
11
19
|
unless ::File.exist? path
|
12
|
-
Jekyll.logger.warn "
|
20
|
+
Jekyll.logger.warn 'Width:', "#{input} doesn't exist"
|
13
21
|
return input
|
14
22
|
end
|
15
23
|
|
16
24
|
Jekyll::Images::Cache.cached_image(path).width
|
17
25
|
rescue Vips::Error => e
|
18
|
-
Jekyll.logger.warn "Failed to process #{input}: #{e.message}"
|
26
|
+
Jekyll.logger.warn 'Width:', "Failed to process #{input}: #{e.message}"
|
19
27
|
nil
|
20
28
|
end
|
21
29
|
end
|
@@ -87,10 +87,10 @@ module Jekyll
|
|
87
87
|
return unless write?
|
88
88
|
|
89
89
|
if thumbnail?
|
90
|
-
Jekyll.logger.info "
|
90
|
+
Jekyll.logger.info 'Thumbnail:', "#{filename} => #{dest}"
|
91
91
|
thumbnail.write_to_file(dest)
|
92
92
|
else
|
93
|
-
Jekyll.logger.info
|
93
|
+
Jekyll.logger.info 'Copying:', "#{filename} => #{dest}"
|
94
94
|
FileUtils.cp(filename, dest)
|
95
95
|
end
|
96
96
|
|
@@ -110,7 +110,7 @@ module Jekyll
|
|
110
110
|
|
111
111
|
pct = ((after.to_f / before) * -100 + 100).round(2)
|
112
112
|
|
113
|
-
Jekyll.logger.info "Reduced #{dest} from #{before} to #{after} bytes (%#{pct})"
|
113
|
+
Jekyll.logger.info 'Optimization:', "Reduced #{dest} from #{before} to #{after} bytes (%#{pct})"
|
114
114
|
end
|
115
115
|
|
116
116
|
def relative_path
|
data/lib/jekyll-images.rb
CHANGED
@@ -1,11 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'jekyll/images/cache'
|
4
|
-
|
5
|
-
Jekyll::Hooks.register :site, :after_reset do |site|
|
6
|
-
Jekyll::Images::Cache.site = site
|
7
|
-
end
|
8
|
-
|
9
4
|
require_relative 'jekyll/images/image'
|
10
5
|
require_relative 'jekyll/images/thumbnail'
|
11
6
|
require_relative 'jekyll/filters/thumbnail'
|
@@ -15,3 +10,13 @@ require_relative 'jekyll/filters/dzsave'
|
|
15
10
|
require_relative 'jekyll/filters/max_zoom_level'
|
16
11
|
require_relative 'jekyll/images/oxipng'
|
17
12
|
require_relative 'jekyll/images/jpeg_optim'
|
13
|
+
|
14
|
+
Jekyll::Hooks.register :site, :after_reset do |site|
|
15
|
+
Jekyll::Images::Cache.site =
|
16
|
+
Jekyll::Filters::Height.jekyll_site =
|
17
|
+
Jekyll::Filters::Thumbnail.jekyll_site =
|
18
|
+
Jekyll::Filters::Width.jekyll_site =
|
19
|
+
Jekyll::Filters::MaxZoomLevel.jekyll_site =
|
20
|
+
Jekyll::Filters::Dzsave.jekyll_site =
|
21
|
+
site
|
22
|
+
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-images
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- f
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
cpurTQHNJfL/ah+9dYbgDXdG5HAAjRMAsWSvERw95YdN9XzQZCdUk5wUs+A6cNtO
|
36
36
|
AZZUMTVYNx8JqUeemxlXBRjsD/s=
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2025-
|
38
|
+
date: 2025-06-24 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: jekyll
|
metadata.gz.sig
CHANGED
Binary file
|