diff --git a/lib/jekyll_picture_tag/images/image_file.rb b/lib/jekyll_picture_tag/images/image_file.rb index 1052a66c..c23198d8 100644 --- a/lib/jekyll_picture_tag/images/image_file.rb +++ b/lib/jekyll_picture_tag/images/image_file.rb @@ -86,7 +86,13 @@ def notify end def resize(image) - image.resize(scale_value) + if image.has_alpha? + image = image.premultiply + image = image.resize(scale_value) + image.unpremultiply + else + image.resize(scale_value) + end end def crop(image) diff --git a/test/image_files/pestka_transparent.png b/test/image_files/pestka_transparent.png new file mode 100644 index 00000000..bed2da81 Binary files /dev/null and b/test/image_files/pestka_transparent.png differ diff --git a/test/unit/images/test_image_file.rb b/test/unit/images/test_image_file.rb index c9daad53..9de495f1 100644 --- a/test/unit/images/test_image_file.rb +++ b/test/unit/images/test_image_file.rb @@ -129,6 +129,15 @@ def test_resize assert_equal(10, width) end + def test_resize_with_alpha + restub_source('pestka_transparent', 'png') + tested + + width = Vips::Image.new_from_file(filename).width + + assert_equal(10, width) + end + def test_quality # We have to use slightly larger images for the quality to make a difference # in file size.