zpng 0.0.1 → 0.0.2

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.
data/README.md CHANGED
@@ -47,6 +47,8 @@ Usage
47
47
 
48
48
  ### ASCII
49
49
 
50
+ source image: ![qr_rgb.png](https://github.com/zed-0xff/zpng/raw/master/samples/qr_rgb.png)
51
+
50
52
  # zpng --ascii qr_rgb.png
51
53
 
52
54
 
@@ -25,6 +25,8 @@ Usage
25
25
 
26
26
  ### ASCII
27
27
 
28
+ source image: ![qr_rgb.png](https://github.com/zed-0xff/zpng/raw/master/samples/qr_rgb.png)
29
+
28
30
  % zpng --ascii qr_rgb.png
29
31
 
30
32
  ### Scanlines
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -1,6 +1,6 @@
1
1
  module ZPNG
2
2
  class Chunk
3
- attr_accessor :size, :type, :data, :crc
3
+ attr_accessor :size, :type, :data, :crc, :idx
4
4
 
5
5
  def self.from_stream io
6
6
  size, type = io.read(8).unpack('Na4')
@@ -39,7 +39,7 @@ module ZPNG
39
39
  size = @size ? sprintf("%5d",@size) : sprintf("%5s","???")
40
40
  crc = @crc ? sprintf("%08x",@crc) : sprintf("%8s","???")
41
41
  type = @type.to_s.gsub(/[^0-9a-z]/i){ |x| sprintf("\\x%02X",x.ord) }
42
- sprintf("#<ZPNG::Chunk %4s size=%s, crc=%s >", type, size, crc)
42
+ sprintf "<Chunk #%02d %4s size=%s, crc=%s >", idx.to_i, type, size, crc
43
43
  end
44
44
 
45
45
  def crc_ok?
@@ -129,5 +129,25 @@ module ZPNG
129
129
 
130
130
  class IEND < Chunk
131
131
  end
132
+
133
+ class ZTXT < Chunk
134
+ attr_accessor :keyword, :comp_method, :text
135
+ def initialize *args
136
+ super
137
+ @keyword,@comp_method,@text = data.unpack('Z*Ca*')
138
+ if @text
139
+ @text = Zlib::Inflate.inflate(@text)
140
+ end
141
+ end
142
+ def inspect
143
+ super.sub(/ *>$/,'') + ", " +
144
+ (instance_variables-[:@type, :@crc, :@data, :@size]).
145
+ map do |var|
146
+ t = instance_variable_get(var).to_s
147
+ t = t[0..10] + "..." if t.size > 10
148
+ "#{var.to_s.tr('@','')}=#{t}"
149
+ end.join(", ") + ">"
150
+ end
151
+ end
132
152
  end
133
153
  end
@@ -34,6 +34,10 @@ class ZPNG::CLI
34
34
  ACTIONS.each do |t,desc|
35
35
  opts.on *[ "-#{t[0].upcase}", "--#{t}", desc, eval("lambda{ |_| @actions << :#{t} }") ]
36
36
  end
37
+
38
+ opts.on "-E", "--extract-chunk id" do |id|
39
+ @actions << [:extract_chunk, id.to_i]
40
+ end
37
41
  end
38
42
 
39
43
  if (argv = optparser.parse(@argv)).empty?
@@ -51,7 +55,11 @@ class ZPNG::CLI
51
55
  @zpng = load_file fname
52
56
 
53
57
  @actions.each do |action|
54
- self.send(action) if self.respond_to?(action)
58
+ if action.is_a?(Array)
59
+ self.send(*action) if self.respond_to?(action.first)
60
+ else
61
+ self.send(action) if self.respond_to?(action)
62
+ end
55
63
  end
56
64
  end
57
65
  rescue Errno::EPIPE
@@ -59,6 +67,19 @@ class ZPNG::CLI
59
67
  # prevents a 'Broken pipe - <STDOUT> (Errno::EPIPE)' message
60
68
  end
61
69
 
70
+ def extract_chunk id
71
+ @img.chunks.each do |chunk|
72
+ if chunk.idx == id
73
+ case chunk
74
+ when ZPNG::Chunk::ZTXT
75
+ print chunk.text
76
+ else
77
+ print chunk.data
78
+ end
79
+ end
80
+ end
81
+ end
82
+
62
83
  def load_file fname
63
84
  @img = ZPNG::Image.new fname
64
85
  end
@@ -26,6 +26,7 @@ module ZPNG
26
26
  @chunks = []
27
27
  while !io.eof?
28
28
  chunk = Chunk.from_stream(io)
29
+ chunk.idx = @chunks.size
29
30
  @chunks << chunk
30
31
  case chunk
31
32
  when Chunk::IHDR
@@ -0,0 +1,86 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "zpng"
8
+ s.version = "0.0.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Andrey \"Zed\" Zaikin"]
12
+ s.date = "2012-03-18"
13
+ s.email = "zed.0xff@gmail.com"
14
+ s.executables = ["zpng"]
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.md",
18
+ "README.md.tpl"
19
+ ]
20
+ s.files = [
21
+ ".document",
22
+ ".rspec",
23
+ "Gemfile",
24
+ "Gemfile.lock",
25
+ "LICENSE.txt",
26
+ "README.md",
27
+ "README.md.tpl",
28
+ "Rakefile",
29
+ "VERSION",
30
+ "bin/zpng",
31
+ "lib/zpng.rb",
32
+ "lib/zpng/block.rb",
33
+ "lib/zpng/chunk.rb",
34
+ "lib/zpng/cli.rb",
35
+ "lib/zpng/color.rb",
36
+ "lib/zpng/image.rb",
37
+ "lib/zpng/scan_line.rb",
38
+ "samples/modify.rb",
39
+ "samples/qr_aux_chunks.png",
40
+ "samples/qr_bw.png",
41
+ "samples/qr_gray_alpha.png",
42
+ "samples/qr_grayscale.png",
43
+ "samples/qr_plte.png",
44
+ "samples/qr_plte_bw.png",
45
+ "samples/qr_rgb.png",
46
+ "samples/qr_rgba.png",
47
+ "spec/ascii_spec.rb",
48
+ "spec/modify_spec.rb",
49
+ "spec/spec_helper.rb",
50
+ "spec/zpng_spec.rb",
51
+ "zpng.gemspec"
52
+ ]
53
+ s.homepage = "http://github.com/zed-0xff/zpng"
54
+ s.licenses = ["MIT"]
55
+ s.require_paths = ["lib"]
56
+ s.rubygems_version = "1.8.10"
57
+ s.summary = "pure ruby PNG file manipulation & validation"
58
+
59
+ if s.respond_to? :specification_version then
60
+ s.specification_version = 3
61
+
62
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
63
+ s.add_runtime_dependency(%q<colorize>, [">= 0"])
64
+ s.add_runtime_dependency(%q<hexdump>, [">= 0"])
65
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
66
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
67
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
68
+ s.add_development_dependency(%q<rcov>, [">= 0"])
69
+ else
70
+ s.add_dependency(%q<colorize>, [">= 0"])
71
+ s.add_dependency(%q<hexdump>, [">= 0"])
72
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
73
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
74
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
75
+ s.add_dependency(%q<rcov>, [">= 0"])
76
+ end
77
+ else
78
+ s.add_dependency(%q<colorize>, [">= 0"])
79
+ s.add_dependency(%q<hexdump>, [">= 0"])
80
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
81
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
82
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
83
+ s.add_dependency(%q<rcov>, [">= 0"])
84
+ end
85
+ end
86
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zpng
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-20 00:00:00.000000000 Z
12
+ date: 2012-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: colorize
16
- requirement: &70359178912700 !ruby/object:Gem::Requirement
16
+ requirement: &70231152732120 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70359178912700
24
+ version_requirements: *70231152732120
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hexdump
27
- requirement: &70359178930900 !ruby/object:Gem::Requirement
27
+ requirement: &70231152731280 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70359178930900
35
+ version_requirements: *70231152731280
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70359178930200 !ruby/object:Gem::Requirement
38
+ requirement: &70231152746560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.8.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70359178930200
46
+ version_requirements: *70231152746560
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &70359178929280 !ruby/object:Gem::Requirement
49
+ requirement: &70231152745500 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70359178929280
57
+ version_requirements: *70231152745500
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &70359178928180 !ruby/object:Gem::Requirement
60
+ requirement: &70231152744400 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.6.4
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70359178928180
68
+ version_requirements: *70231152744400
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rcov
71
- requirement: &70359178927440 !ruby/object:Gem::Requirement
71
+ requirement: &70231152742060 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70359178927440
79
+ version_requirements: *70231152742060
80
80
  description:
81
81
  email: zed.0xff@gmail.com
82
82
  executables:
@@ -117,6 +117,7 @@ files:
117
117
  - spec/modify_spec.rb
118
118
  - spec/spec_helper.rb
119
119
  - spec/zpng_spec.rb
120
+ - zpng.gemspec
120
121
  homepage: http://github.com/zed-0xff/zpng
121
122
  licenses:
122
123
  - MIT
@@ -132,7 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
132
133
  version: '0'
133
134
  segments:
134
135
  - 0
135
- hash: 958619003383702064
136
+ hash: -893836760864101821
136
137
  required_rubygems_version: !ruby/object:Gem::Requirement
137
138
  none: false
138
139
  requirements: