Merge pull request #68 from driehuis/master
Add option to strip EXIF profiles
This commit is contained in:
commit
b628a11925
|
@ -52,6 +52,11 @@ responsive_image:
|
||||||
# working with JPGs directly from digital cameras and smartphones
|
# working with JPGs directly from digital cameras and smartphones
|
||||||
auto_rotate: false
|
auto_rotate: false
|
||||||
|
|
||||||
|
# [Optional, Default: false]
|
||||||
|
# Strip EXIF and other JPEG profiles. Helps to minimize JPEG size and win friends
|
||||||
|
# at Google PageSpeed.
|
||||||
|
strip: false
|
||||||
|
|
||||||
# [Optional, Default: assets]
|
# [Optional, Default: assets]
|
||||||
# The base directory where assets are stored. This is used to determine the
|
# The base directory where assets are stored. This is used to determine the
|
||||||
# `dirname` value in `output_path_format` below.
|
# `dirname` value in `output_path_format` below.
|
||||||
|
|
|
@ -86,3 +86,34 @@ Feature: Responsive image generation
|
||||||
When I run Jekyll
|
When I run Jekyll
|
||||||
Then the file "_site/assets/resized/exif-rotation-100x50.jpeg" should exist
|
Then the file "_site/assets/resized/exif-rotation-100x50.jpeg" should exist
|
||||||
Then the file "_site/assets/resized/progressive-100x50.jpeg" should exist
|
Then the file "_site/assets/resized/progressive-100x50.jpeg" should exist
|
||||||
|
|
||||||
|
Scenario: Images should not be stripped of EXIF info by default
|
||||||
|
Given I have a responsive_image configuration with:
|
||||||
|
"""
|
||||||
|
template: _includes/responsive-image.html
|
||||||
|
sizes:
|
||||||
|
- width: 100
|
||||||
|
"""
|
||||||
|
And I have a file "index.html" with:
|
||||||
|
"""
|
||||||
|
{% responsive_image path: assets/exif-rotation.jpeg %}
|
||||||
|
"""
|
||||||
|
When I run Jekyll
|
||||||
|
Then the file "_site/assets/resized/exif-rotation-100x50.jpeg" should exist
|
||||||
|
Then the image "_site/assets/resized/exif-rotation-100x50.jpeg" should have an EXIF orientation
|
||||||
|
|
||||||
|
Scenario: Images can be stripped of EXIF info
|
||||||
|
Given I have a responsive_image configuration with:
|
||||||
|
"""
|
||||||
|
template: _includes/responsive-image.html
|
||||||
|
sizes:
|
||||||
|
- width: 100
|
||||||
|
strip: true
|
||||||
|
"""
|
||||||
|
And I have a file "index.html" with:
|
||||||
|
"""
|
||||||
|
{% responsive_image path: assets/exif-rotation.jpeg %}
|
||||||
|
"""
|
||||||
|
When I run Jekyll
|
||||||
|
Then the file "_site/assets/resized/exif-rotation-100x50.jpeg" should exist
|
||||||
|
Then the image "_site/assets/resized/exif-rotation-100x50.jpeg" should have no EXIF orientation
|
||||||
|
|
|
@ -65,6 +65,18 @@ Then /^the image "(.+)" should be interlaced$/ do |path|
|
||||||
img.destroy!
|
img.destroy!
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Then /^the image "(.+)" should have an EXIF orientation$/ do |path|
|
||||||
|
img = Magick::Image::read(path).first
|
||||||
|
assert_not_equal img.orientation.to_i, 0
|
||||||
|
img.destroy!
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the image "(.+)" should have no EXIF orientation$/ do |path|
|
||||||
|
img = Magick::Image::read(path).first
|
||||||
|
assert_equal img.orientation.to_i, 0
|
||||||
|
img.destroy!
|
||||||
|
end
|
||||||
|
|
||||||
def write_file(path, contents)
|
def write_file(path, contents)
|
||||||
File.open(path, 'w') do |f|
|
File.open(path, 'w') do |f|
|
||||||
f.write(contents)
|
f.write(contents)
|
||||||
|
|
|
@ -9,7 +9,8 @@ module Jekyll
|
||||||
'extra_images' => [],
|
'extra_images' => [],
|
||||||
'auto_rotate' => false,
|
'auto_rotate' => false,
|
||||||
'save_to_source' => true,
|
'save_to_source' => true,
|
||||||
'cache' => false
|
'cache' => false,
|
||||||
|
'strip' => false
|
||||||
}
|
}
|
||||||
|
|
||||||
def initialize(site)
|
def initialize(site)
|
||||||
|
|
|
@ -36,6 +36,9 @@ module Jekyll
|
||||||
|
|
||||||
Jekyll.logger.info "Generating #{target_filepath}"
|
Jekyll.logger.info "Generating #{target_filepath}"
|
||||||
|
|
||||||
|
if config['strip']
|
||||||
|
img.strip!
|
||||||
|
end
|
||||||
i = img.scale(ratio)
|
i = img.scale(ratio)
|
||||||
i.write(target_filepath) do |f|
|
i.write(target_filepath) do |f|
|
||||||
f.interlace = i.interlace
|
f.interlace = i.interlace
|
||||||
|
|
Loading…
Reference in New Issue