diff --git a/lib/fastimage.rb b/lib/fastimage.rb index 318d796..4e121d0 100644 --- a/lib/fastimage.rb +++ b/lib/fastimage.rb @@ -463,7 +463,9 @@ class FastImage end def parse_size_for_ico - @stream.read(8)[6..7].unpack('CC').map{|byte| byte == 0 ? 256 : byte } + icons = @stream.read(6)[4..5].unpack('v').first + sizes = icons.times.map { @stream.read(16).unpack('C2').map { |x| x == 0 ? 256 : x } }.sort_by { |w,h| w * h } + sizes.last end alias_method :parse_size_for_cur, :parse_size_for_ico diff --git a/test/fixtures/favicon2.ico b/test/fixtures/favicon2.ico new file mode 100644 index 0000000..82339b3 Binary files /dev/null and b/test/fixtures/favicon2.ico differ diff --git a/test/test.rb b/test/test.rb index 7538194..ab9fb30 100644 --- a/test/test.rb +++ b/test/test.rb @@ -26,7 +26,8 @@ GoodFixtures = { "infinite.jpg"=>[:jpeg, [160,240]], "orient_2.jpg"=>[:jpeg, [230,408]], "favicon.ico" => [:ico, [16, 16]], - "man.ico" => [:ico, [48, 48]], + "favicon2.ico" => [:ico, [32, 32]], + "man.ico" => [:ico, [256, 256]], "test.cur" => [:cur, [32, 32]], "webp_vp8x.webp" => [:webp, [386, 395]], "webp_vp8l.webp" => [:webp, [386, 395]],