fastimage 2.1.0 → 2.1.1
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
- data/README.textile +5 -0
- data/lib/fastimage.rb +16 -8
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 286c430f0c94ceafdbcbe884ae9bee4252e549c0
         | 
| 4 | 
            +
              data.tar.gz: c006bb076bdefba5bfdea4f024c8f327189b0b83
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: cb7f192a5d7c2909c9b5275305608ed3c2e9c97e6d7fc9d0bd1386b08e3ccc29621a8cff9ba3b83eae4651fdbf8c27b2aa0cd70c5dea50efcd0912c7d82fcdc2
         | 
| 7 | 
            +
              data.tar.gz: 72a91dbf2da909e0ebadbbd902fb7ffbbd3d7718073726fed3b23044bbc67134892008d227607d0f27e4b89ba464a451526a95c3bb047ed353c9addb98485a63
         | 
    
        data/README.textile
    CHANGED
    
    | @@ -92,6 +92,10 @@ h2. Documentation | |
| 92 92 |  | 
| 93 93 | 
             
            "http://sdsykes.github.io/fastimage/rdoc/FastImage.html":http://sdsykes.github.io/fastimage/rdoc/FastImage.html
         | 
| 94 94 |  | 
| 95 | 
            +
            h2. Maintainer
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            FastImage is maintained by Stephen Sykes (@sdsykes). Support this project by using "LibPixel":https://libpixel.com cloud based image resizing and processing service.
         | 
| 98 | 
            +
             | 
| 95 99 | 
             
            h2. Benchmark
         | 
| 96 100 |  | 
| 97 101 | 
             
            It's way faster than conventional methods (for example the image_size gem) for most types of file when fetching over the wire.
         | 
| @@ -151,6 +155,7 @@ h2. FastImage in other languages | |
| 151 155 | 
             
            * "PHP by tommoor":https://github.com/tommoor/fastimage
         | 
| 152 156 | 
             
            * "Node.js by ShogunPanda":https://github.com/ShogunPanda/fastimage
         | 
| 153 157 | 
             
            * "Objective C by kylehickinson":https://github.com/kylehickinson/FastImage
         | 
| 158 | 
            +
            * "Android by qstumn":https://github.com/qstumn/FastImageSize
         | 
| 154 159 |  | 
| 155 160 | 
             
            h2. Licence
         | 
| 156 161 |  | 
    
        data/lib/fastimage.rb
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 1 2 | 
             
            # coding: ASCII-8BIT
         | 
| 2 3 |  | 
| 3 4 | 
             
            # FastImage finds the size or type of an image given its uri.
         | 
| @@ -190,6 +191,8 @@ class FastImage | |
| 190 191 |  | 
| 191 192 | 
             
                @property = @options[:type_only] ? :type : :size
         | 
| 192 193 |  | 
| 194 | 
            +
                @type, @state = nil
         | 
| 195 | 
            +
             | 
| 193 196 | 
             
                if uri.respond_to?(:read)
         | 
| 194 197 | 
             
                  fetch_using_read(uri)
         | 
| 195 198 | 
             
                elsif uri.start_with?('data:')
         | 
| @@ -385,7 +388,9 @@ class FastImage | |
| 385 388 |  | 
| 386 389 | 
             
              def fetch_using_base64(uri)
         | 
| 387 390 | 
             
                data = uri.split(',')[1]
         | 
| 388 | 
            -
                 | 
| 391 | 
            +
                decoded = Base64.decode64(data)
         | 
| 392 | 
            +
                @content_length = decoded.size
         | 
| 393 | 
            +
                fetch_using_read StringIO.new(decoded)
         | 
| 389 394 | 
             
              end
         | 
| 390 395 |  | 
| 391 396 | 
             
              module StreamUtil # :nodoc:
         | 
| @@ -431,7 +436,7 @@ class FastImage | |
| 431 436 | 
             
                    @strpos = 0
         | 
| 432 437 | 
             
                  end
         | 
| 433 438 |  | 
| 434 | 
            -
                   | 
| 439 | 
            +
                  @str[@strpos..(@strpos + n - 1)]
         | 
| 435 440 | 
             
                end
         | 
| 436 441 |  | 
| 437 442 | 
             
                def read(n)
         | 
| @@ -488,7 +493,7 @@ class FastImage | |
| 488 493 | 
             
                  :webp if @stream.peek(12)[8..11] == "WEBP"
         | 
| 489 494 | 
             
                when "<s"
         | 
| 490 495 | 
             
                  :svg
         | 
| 491 | 
            -
                when  | 
| 496 | 
            +
                when /<[?!]/
         | 
| 492 497 | 
             
                  # Peek 10 more chars each time, and if end of file is reached just raise
         | 
| 493 498 | 
             
                  # unknown. We assume the <svg tag cannot be within 10 chars of the end of
         | 
| 494 499 | 
             
                  # the file, and is within the first 250 chars.
         | 
| @@ -518,6 +523,7 @@ class FastImage | |
| 518 523 | 
             
              end
         | 
| 519 524 |  | 
| 520 525 | 
             
              def parse_size_for_jpeg
         | 
| 526 | 
            +
                exif = nil
         | 
| 521 527 | 
             
                loop do
         | 
| 522 528 | 
             
                  @state = case @state
         | 
| 523 529 | 
             
                  when nil
         | 
| @@ -533,7 +539,7 @@ class FastImage | |
| 533 539 | 
             
                      io = StringIO.new(data)
         | 
| 534 540 | 
             
                      if io.read(4) == "Exif"
         | 
| 535 541 | 
             
                        io.read(2)
         | 
| 536 | 
            -
                         | 
| 542 | 
            +
                        exif = Exif.new(IOStream.new(io)) rescue nil
         | 
| 537 543 | 
             
                      end
         | 
| 538 544 | 
             
                      :started
         | 
| 539 545 | 
             
                    when 0xe0..0xef
         | 
| @@ -553,8 +559,8 @@ class FastImage | |
| 553 559 | 
             
                    @stream.skip(3)
         | 
| 554 560 | 
             
                    height = @stream.read_int
         | 
| 555 561 | 
             
                    width = @stream.read_int
         | 
| 556 | 
            -
                    width, height = height, width if  | 
| 557 | 
            -
                    return [width, height,  | 
| 562 | 
            +
                    width, height = height, width if exif && exif.rotated?
         | 
| 563 | 
            +
                    return [width, height, exif ? exif.orientation : 1]
         | 
| 558 564 | 
             
                  end
         | 
| 559 565 | 
             
                end
         | 
| 560 566 | 
             
              end
         | 
| @@ -575,7 +581,7 @@ class FastImage | |
| 575 581 |  | 
| 576 582 | 
             
              def parse_size_for_webp
         | 
| 577 583 | 
             
                vp8 = @stream.read(16)[12..15]
         | 
| 578 | 
            -
                 | 
| 584 | 
            +
                _len = @stream.read(4).unpack("V")
         | 
| 579 585 | 
             
                case vp8
         | 
| 580 586 | 
             
                when "VP8 "
         | 
| 581 587 | 
             
                  parse_size_vp8
         | 
| @@ -617,6 +623,7 @@ class FastImage | |
| 617 623 |  | 
| 618 624 | 
             
                def initialize(stream)
         | 
| 619 625 | 
             
                  @stream = stream
         | 
| 626 | 
            +
                  @width, @height, @orientation = nil
         | 
| 620 627 | 
             
                  parse_exif
         | 
| 621 628 | 
             
                end
         | 
| 622 629 |  | 
| @@ -696,6 +703,7 @@ class FastImage | |
| 696 703 | 
             
              class Svg # :nodoc:
         | 
| 697 704 | 
             
                def initialize(stream)
         | 
| 698 705 | 
             
                  @stream = stream
         | 
| 706 | 
            +
                  @width, @height, @ratio, @viewbox_width, @viewbox_height = nil
         | 
| 699 707 | 
             
                  parse_svg
         | 
| 700 708 | 
             
                end
         | 
| 701 709 |  | 
| @@ -732,7 +740,7 @@ class FastImage | |
| 732 740 | 
             
                        return if @width
         | 
| 733 741 | 
             
                      elsif attr_name.join =~ /viewbox/i
         | 
| 734 742 | 
             
                        values = attr_value.split(/\s/)
         | 
| 735 | 
            -
                        if values[2].to_f > 0 && values[3].to_f > 0 | 
| 743 | 
            +
                        if values[2].to_f > 0 && values[3].to_f > 0
         | 
| 736 744 | 
             
                          @ratio = values[2].to_f / values[3].to_f
         | 
| 737 745 | 
             
                          @viewbox_width = values[2].to_i
         | 
| 738 746 | 
             
                          @viewbox_height = values[3].to_i
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: fastimage
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.1. | 
| 4 | 
            +
              version: 2.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Stephen Sykes
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017- | 
| 11 | 
            +
            date: 2017-12-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: fakeweb
         |