fastimage 2.2.0 → 2.2.3
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 +2 -1
- data/lib/fastimage.rb +38 -29
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4124655c4f8af69e9b8bf9bfa433a11161e9ea97c23e755a196555012eadf75b
|
4
|
+
data.tar.gz: 40fef6aa908fc14799f2cb53e80d5081bef11ce0482d86c5947841fb29ee9604
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 205fb43dacd3239f8425dd8cbd311be8c375f3c377cbf71771b87304b0c62780905a366783b1b5606e7386edf9ed2fe1cab138b8a20ad47f238150d5143b93db
|
7
|
+
data.tar.gz: 219ac67b55c23bb59458fc57d165a76c0bf5855c971c705d033103c01848cbb9f3fb4a1e8024419192ced93f076d223fb6e3ce77289b8ed94858d0e58c5387df
|
data/README.textile
CHANGED
@@ -132,7 +132,7 @@ h2. Tests
|
|
132
132
|
|
133
133
|
You'll need to @gem install fakeweb@ and possibly also @gem install test-unit@ to be able to run the tests.
|
134
134
|
|
135
|
-
bc.. $ ruby test.rb
|
135
|
+
bc.. $ ruby test/test.rb
|
136
136
|
Run options:
|
137
137
|
|
138
138
|
# Running tests:
|
@@ -156,6 +156,7 @@ h2. FastImage in other languages
|
|
156
156
|
* "Node.js by ShogunPanda":https://github.com/ShogunPanda/fastimage
|
157
157
|
* "Objective C by kylehickinson":https://github.com/kylehickinson/FastImage
|
158
158
|
* "Android by qstumn":https://github.com/qstumn/FastImageSize
|
159
|
+
* "Flutter by ky1vstar":https://github.com/ky1vstar/fastimage.dart
|
159
160
|
|
160
161
|
h2. Licence
|
161
162
|
|
data/lib/fastimage.rb
CHANGED
@@ -251,10 +251,8 @@ class FastImage
|
|
251
251
|
Errno::ENETUNREACH, ImageFetchFailure, Net::HTTPBadResponse, EOFError, Errno::ENOENT,
|
252
252
|
OpenSSL::SSL::SSLError
|
253
253
|
raise ImageFetchFailure if @options[:raise_on_failure]
|
254
|
-
rescue NoMethodError # 1.8.7p248 can raise this due to a net/http bug
|
255
|
-
raise ImageFetchFailure if @options[:raise_on_failure]
|
256
254
|
rescue UnknownImageType
|
257
|
-
raise
|
255
|
+
raise if @options[:raise_on_failure]
|
258
256
|
rescue CannotParseImage
|
259
257
|
if @options[:raise_on_failure]
|
260
258
|
if @property == :size
|
@@ -434,8 +432,11 @@ class FastImage
|
|
434
432
|
end
|
435
433
|
|
436
434
|
def fetch_using_base64(uri)
|
437
|
-
|
438
|
-
|
435
|
+
decoded = begin
|
436
|
+
Base64.decode64(uri.split(',')[1])
|
437
|
+
rescue
|
438
|
+
raise CannotParseImage
|
439
|
+
end
|
439
440
|
@content_length = decoded.size
|
440
441
|
fetch_using_read StringIO.new(decoded)
|
441
442
|
end
|
@@ -471,19 +472,20 @@ class FastImage
|
|
471
472
|
|
472
473
|
# Peeking beyond the end of the input will raise
|
473
474
|
def peek(n)
|
474
|
-
while @strpos + n
|
475
|
+
while @strpos + n > @str.size
|
475
476
|
unused_str = @str[@strpos..-1]
|
477
|
+
|
476
478
|
new_string = @read_fiber.resume
|
479
|
+
new_string = @read_fiber.resume if new_string.is_a? Net::ReadAdapter
|
477
480
|
raise CannotParseImage if !new_string
|
478
|
-
|
479
481
|
# we are dealing with bytes here, so force the encoding
|
480
|
-
new_string.force_encoding("ASCII-8BIT") if
|
482
|
+
new_string.force_encoding("ASCII-8BIT") if new_string.respond_to? :force_encoding
|
481
483
|
|
482
484
|
@str = unused_str + new_string
|
483
485
|
@strpos = 0
|
484
486
|
end
|
485
487
|
|
486
|
-
@str[@strpos
|
488
|
+
@str[@strpos, n]
|
487
489
|
end
|
488
490
|
|
489
491
|
def read(n)
|
@@ -501,7 +503,7 @@ class FastImage
|
|
501
503
|
new_string = @read_fiber.resume
|
502
504
|
raise CannotParseImage if !new_string
|
503
505
|
|
504
|
-
new_string.force_encoding("ASCII-8BIT") if
|
506
|
+
new_string.force_encoding("ASCII-8BIT") if new_string.respond_to? :force_encoding
|
505
507
|
|
506
508
|
fetched += new_string.size
|
507
509
|
@str = new_string
|
@@ -545,7 +547,7 @@ class FastImage
|
|
545
547
|
:webp if @stream.peek(12)[8..11] == "WEBP"
|
546
548
|
when "<s"
|
547
549
|
:svg if @stream.peek(4) == "<svg"
|
548
|
-
when
|
550
|
+
when /\s\s|\s<|<[?!]/
|
549
551
|
# Peek 10 more chars each time, and if end of file is reached just raise
|
550
552
|
# unknown. We assume the <svg tag cannot be within 10 chars of the end of
|
551
553
|
# the file, and is within the first 250 chars.
|
@@ -578,38 +580,45 @@ class FastImage
|
|
578
580
|
# Checks if a delay between frames exists and if it does, then the GIFs is
|
579
581
|
# animated
|
580
582
|
def animated?
|
581
|
-
|
583
|
+
frames = 0
|
582
584
|
|
583
|
-
|
585
|
+
# "GIF" + version (3) + width (2) + height (2)
|
586
|
+
@stream.skip(10)
|
584
587
|
|
585
|
-
|
586
|
-
|
587
|
-
#
|
588
|
-
if fields & 0x80
|
588
|
+
# fields (1) + bg color (1) + pixel ratio (1)
|
589
|
+
fields = @stream.read(3).unpack("CCC")[0]
|
590
|
+
if fields & 0x80 != 0 # Global Color Table
|
589
591
|
# 2 * (depth + 1) colors, each occupying 3 bytes (RGB)
|
590
592
|
@stream.skip(3 * 2 ** ((fields & 0x7) + 1))
|
591
593
|
end
|
592
594
|
|
593
595
|
loop do
|
594
596
|
block_type = @stream.read(1).unpack("C")[0]
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
597
|
+
|
598
|
+
if block_type == 0x21 # Graphic Control Extension
|
599
|
+
# extension type (1) + size (1)
|
600
|
+
size = @stream.read(2).unpack("CC")[1]
|
601
|
+
@stream.skip(size)
|
602
|
+
skip_sub_blocks
|
603
|
+
elsif block_type == 0x2C # Image Descriptor
|
604
|
+
frames += 1
|
605
|
+
return true if frames > 1
|
606
|
+
|
607
|
+
# left position (2) + top position (2) + width (2) + height (2) + fields (1)
|
608
|
+
fields = @stream.read(9).unpack("SSSSC")[4]
|
609
|
+
if fields & 0x80 != 0 # Local Color Table
|
610
|
+
# 2 * (depth + 1) colors, each occupying 3 bytes (RGB)
|
611
|
+
@stream.skip(3 * 2 ** ((fields & 0x7) + 1))
|
605
612
|
end
|
613
|
+
|
614
|
+
@stream.skip(1) # LZW min code size (1)
|
606
615
|
skip_sub_blocks
|
607
616
|
else
|
608
|
-
|
617
|
+
break # unrecognized block
|
609
618
|
end
|
610
619
|
end
|
611
620
|
|
612
|
-
|
621
|
+
false
|
613
622
|
end
|
614
623
|
|
615
624
|
private
|
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.2.
|
4
|
+
version: 2.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Sykes
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fakeweb-fi
|
@@ -81,7 +81,7 @@ homepage: http://github.com/sdsykes/fastimage
|
|
81
81
|
licenses:
|
82
82
|
- MIT
|
83
83
|
metadata: {}
|
84
|
-
post_install_message:
|
84
|
+
post_install_message:
|
85
85
|
rdoc_options:
|
86
86
|
- "--charset=UTF-8"
|
87
87
|
require_paths:
|
@@ -97,8 +97,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
|
-
rubygems_version: 3.
|
101
|
-
signing_key:
|
100
|
+
rubygems_version: 3.2.3
|
101
|
+
signing_key:
|
102
102
|
specification_version: 4
|
103
103
|
summary: FastImage - Image info fast
|
104
104
|
test_files: []
|