dzt 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c018286ce3a4f3757165b6161bf7b72bed6b27f7
4
- data.tar.gz: a33c40482e316a18db138ae5e6a4874c6fcd2b16
3
+ metadata.gz: ce8a839471a23570ac4124ed734deeb67747ea4d
4
+ data.tar.gz: 9f7a6fcbb80de844dfb0f4398dfb32ce7f93b214
5
5
  SHA512:
6
- metadata.gz: b0071e6a9db8c4c60d997ec3e74a99468a5772536efdba703ab4d69a2cda1dcea021d5d61c8cf8cab6734ca41cb561612dbe5a2d37d11ce647e94fe25b667d5b
7
- data.tar.gz: 19b6653c1f5b024abe55f605eb38098f9eb43d3f786bf0c175ef1866fa9e311bc774e81351da38a01eb4dfb2b59cdf5cbf5aa20eaa804e5fd4fed47977013c45
6
+ metadata.gz: 1aa34f46fde849ee1719c4d27e4d87bb6a5fe6237cb093db7a689560ca7782b45006ccb7bdc0db1b66f0b3f4ca8b8db590ae171a012e0b36bfdf6b98ee776cc0
7
+ data.tar.gz: 8f4ac4a4d1ad796d92a52bd462bd508f19f91bce011312ff93ffc0bf504e64ece03575a4b45b46e1c0d2732565e293ff1232d8f3e7d720a83c0ae107a143eb75
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ### Next Release (TBD)
2
+
3
+ * Your contribution here.
4
+
5
+ ### 0.2.2 (6/12/2015)
6
+
7
+ * [#9](https://github.com/dblock/dzt/issues/9): Do not require fog unless producing output to S3, clarify require fog - [@dblock](https://github.com/dblock).
8
+
1
9
  ### 0.2.1 (1/2/2015)
2
10
 
3
11
  * [#8](https://github.com/dblock/dzt/pull/8): Fixes setting quality via command line - [@dzucconi](https://github.com/dzucconi).
data/CONTRIBUTING.md CHANGED
@@ -1,10 +1,118 @@
1
- Contributing
2
- ============
1
+ Contributing to Dzt
2
+ ===================
3
3
 
4
- You're encouraged to contribute to this gem.
4
+ Dzt is work of [many of contributors](https://github.com/dblock/dzt/graphs/contributors). You're encouraged to submit [pull requests](https://github.com/dblock/dzt/pulls), [propose features and discuss issues](https://github.com/dblock/dzt/issues).
5
5
 
6
- * Fork this project.
7
- * Make changes, write tests.
8
- * Updated [CHANGELOG](CHANGELOG.md).
9
- * Make a pull request, bonus points for topic branches.
6
+ #### Fork the Project
10
7
 
8
+ Fork the [project on Github](https://github.com/dblock/dzt) and check out your copy.
9
+
10
+ ```
11
+ git clone https://github.com/contributor/dzt.git
12
+ cd dzt
13
+ git remote add upstream https://github.com/dblock/dzt.git
14
+ ```
15
+
16
+ #### Create a Topic Branch
17
+
18
+ Make sure your fork is up-to-date and create a topic branch for your feature or bug fix.
19
+
20
+ ```
21
+ git checkout master
22
+ git pull upstream master
23
+ git checkout -b my-feature-branch
24
+ ```
25
+
26
+ #### Bundle Install and Test
27
+
28
+ Ensure that you can build the project and run tests.
29
+
30
+ ```
31
+ bundle install
32
+ bundle exec rake
33
+ ```
34
+
35
+ #### Write Tests
36
+
37
+ Try to write a test that reproduces the problem you're trying to fix or describes a feature that you want to build. Add to [spec/dzt](spec/dzt).
38
+
39
+ We definitely appreciate pull requests that highlight or reproduce a problem, even without a fix.
40
+
41
+ #### Write Code
42
+
43
+ Implement your feature or bug fix.
44
+
45
+ Ruby style is enforced with [Rubocop](https://github.com/bbatsov/rubocop), run `bundle exec rubocop` and fix any style issues highlighted.
46
+
47
+ Make sure that `bundle exec rake` completes without errors.
48
+
49
+ #### Write Documentation
50
+
51
+ Document any external behavior in the [README](README.md).
52
+
53
+ #### Update Changelog
54
+
55
+ Add a line to [CHANGELOG](CHANGELOG.md) under *Next Release*. Make it look like every other line, including your name and link to your Github account.
56
+
57
+ #### Commit Changes
58
+
59
+ Make sure git knows your name and email address:
60
+
61
+ ```
62
+ git config --global user.name "Your Name"
63
+ git config --global user.email "contributor@example.com"
64
+ ```
65
+
66
+ Writing good commit logs is important. A commit log should describe what changed and why.
67
+
68
+ ```
69
+ git add ...
70
+ git commit
71
+ ```
72
+
73
+ #### Push
74
+
75
+ ```
76
+ git push origin my-feature-branch
77
+ ```
78
+
79
+ #### Make a Pull Request
80
+
81
+ Go to https://github.com/contributor/dzt and select your feature branch. Click the 'Pull Request' button and fill out the form. Pull requests are usually reviewed within a few days.
82
+
83
+ #### Rebase
84
+
85
+ If you've been working on a change for a while, rebase with upstream/master.
86
+
87
+ ```
88
+ git fetch upstream
89
+ git rebase upstream/master
90
+ git push origin my-feature-branch -f
91
+ ```
92
+
93
+ #### Update CHANGELOG Again
94
+
95
+ Update the [CHANGELOG](CHANGELOG.md) with the pull request number. A typical entry looks as follows.
96
+
97
+ ```
98
+ * [#123](https://github.com/dblock/dzt/pull/123): Reticulated splines - [@contributor](https://github.com/contributor).
99
+ ```
100
+
101
+ Amend your previous commit and force push the changes.
102
+
103
+ ```
104
+ git commit --amend
105
+ git push origin my-feature-branch -f
106
+ ```
107
+
108
+ #### Check on Your Pull Request
109
+
110
+ Go back to your pull request after a few minutes and see whether it passed muster with Travis-CI. Everything should look green, otherwise fix issues and amend your commit as described above.
111
+
112
+ #### Be Patient
113
+
114
+ It's likely that your change will not be merged and that the nitpicky maintainers will ask you to do more, or fix seemingly benign problems. Hang on there!
115
+
116
+ #### Thank You
117
+
118
+ Please do know that we really appreciate and value your time and work. We love you, really.
data/bin/dzt CHANGED
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'gli'
3
3
  require 'dzt'
4
- require 'fog'
5
4
 
6
5
  include GLI::App
7
6
 
@@ -9,7 +8,7 @@ program_desc 'Tile images into deep-zoom tiles'
9
8
 
10
9
  default_command :slice
11
10
 
12
- desc "Slice an image"
11
+ desc 'Slice an image'
13
12
  command :slice do |c|
14
13
  c.flag [:o, :output, 'output'], desc: 'Output folder'
15
14
  c.flag [:ts, :tilesize, 'tile-size'], desc: 'Tile size', default_value: DZT::Tiler::DEFAULT_TILE_SIZE, type: Integer
@@ -22,15 +21,13 @@ command :slice do |c|
22
21
  c.flag [:s3_key, 's3-key'], desc: 'S3 Key', default_value: DZT::S3Storage::DEFAULT_KEY
23
22
  c.flag [:aws_id, 'aws-id'], desc: 'AWS Id'
24
23
  c.flag [:aws_secret, 'aws-secret'], desc: 'AWS Secret'
25
- c.action do |global_options, options, args|
26
- if args.length < 1
27
- raise 'You must specify an image file to slice.'
28
- end
24
+ c.action do |_global_options, options, args|
25
+ fail 'You must specify an image file to slice.' if args.length < 1
29
26
  if options[:output]
30
27
  storage = DZT::FileStorage.new(
31
28
  destination: options[:output]
32
29
  )
33
- else
30
+ elsif options[:aws_id] && options[:aws_secret] && options[:bucket]
34
31
  storage = DZT::S3Storage.new(
35
32
  s3_acl: options[:acl],
36
33
  s3_bucket: options[:bucket],
@@ -38,6 +35,8 @@ command :slice do |c|
38
35
  aws_id: options[:aws_id],
39
36
  aws_secret: options[:aws_secret]
40
37
  )
38
+ else
39
+ fail 'You must specify either --output or --aws_id, --aws_secret and --bucket.'
41
40
  end
42
41
  tiler = DZT::Tiler.new(
43
42
  source: args[0],
@@ -8,7 +8,7 @@ module DZT
8
8
  end
9
9
 
10
10
  def exists?
11
- File.directory?(@store_path) && ! Dir["@{@store_path}/*"].empty?
11
+ File.directory?(@store_path) && !Dir['@{@store_path}/*'].empty?
12
12
  end
13
13
 
14
14
  def storage_location(level)
@@ -24,4 +24,4 @@ module DZT
24
24
  file.write(dest) { self.quality = quality if quality }
25
25
  end
26
26
  end
27
- end
27
+ end
@@ -18,11 +18,14 @@ module DZT
18
18
  end
19
19
 
20
20
  def s3
21
- @s3 ||= Fog::Storage.new(
22
- provider: 'AWS',
23
- aws_access_key_id: @s3_id,
24
- aws_secret_access_key: @s3_secret
25
- )
21
+ @s3 ||= begin
22
+ require_fog!
23
+ Fog::Storage.new(
24
+ provider: 'AWS',
25
+ aws_access_key_id: @s3_id,
26
+ aws_secret_access_key: @s3_secret
27
+ )
28
+ end
26
29
  end
27
30
 
28
31
  # Currently does not supporting checking S3 fo overwritten files
@@ -31,19 +34,28 @@ module DZT
31
34
  end
32
35
 
33
36
  def storage_location(level)
34
- "#{@s3_key}/#{level.to_s}"
37
+ "#{@s3_key}/#{level}"
35
38
  end
36
39
 
37
40
  # no-op
38
- def mkdir(path)
41
+ def mkdir(_path)
39
42
  end
40
43
 
41
44
  def write(file, dest, options = {})
42
45
  quality = options[:quality]
43
46
  s3.put_object(@s3_bucket, dest, file.to_blob { @quality = quality if quality },
44
- 'Content-Type' => file.mime_type,
45
- 'x-amz-acl' => @s3_acl
46
- )
47
+ 'Content-Type' => file.mime_type,
48
+ 'x-amz-acl' => @s3_acl
49
+ )
47
50
  end
48
- end
49
- end
51
+
52
+ private
53
+
54
+ def require_fog!
55
+ require 'fog'
56
+ rescue LoadError => e
57
+ STDERR.puts 'Fog is required for storing data in S3, run `gem install fog`.'
58
+ raise e
59
+ end
60
+ end
61
+ end
data/lib/dzt/tiler.rb CHANGED
@@ -7,7 +7,7 @@ module DZT
7
7
  DEFAULT_TILE_SIZE = 512
8
8
  DEFAULT_TILE_OVERLAP = 0
9
9
  DEFAULT_QUALITY = 75
10
- DEFAULT_TILE_FORMAT = "jpg"
10
+ DEFAULT_TILE_FORMAT = 'jpg'
11
11
  DEFAULT_OVERWRITE_FLAG = false
12
12
 
13
13
  # Generates the DZI-formatted tiles and sets necessary metadata on this object.
@@ -22,7 +22,7 @@ module DZT
22
22
  #
23
23
  def initialize(options)
24
24
  @tile_source = options[:source]
25
- raise "Missing options[:source]." unless @tile_source
25
+ fail 'Missing options[:source].' unless @tile_source
26
26
 
27
27
  @tile_source = Magick::Image.read(@tile_source)[0] if @tile_source.is_a?(String)
28
28
  @tile_size = options[:size] || DEFAULT_TILE_SIZE
@@ -41,27 +41,29 @@ module DZT
41
41
  # Generates the DZI-formatted tiles and sets necessary metadata on this object.
42
42
  # Uses a default tile size of 512 pixels, with a default overlap of 2 pixel.
43
43
  ##
44
- def slice!(&block)
45
- raise "Output #{@destination} already exists!" if ! @overwrite && @storage.exists?
44
+ def slice!(&_block)
45
+ fail "Output #{@destination} already exists!" if ! @overwrite && @storage.exists?
46
46
 
47
47
  image = @tile_source.dup
48
- orig_width, orig_height = image.columns, image.rows
48
+ orig_width = image.columns
49
+ orig_height = image.rows
49
50
 
50
51
  # iterate over all levels (= zoom stages)
51
52
  max_level(orig_width, orig_height).downto(0) do |level|
52
- width, height = image.columns, image.rows
53
+ width = image.columns
54
+ height = image.rows
53
55
 
54
56
  current_level_storage_dir = @storage.storage_location(level)
55
57
  @storage.mkdir(current_level_storage_dir)
56
- if block_given?
57
- yield current_level_storage_dir
58
- end
58
+ yield current_level_storage_dir if block_given?
59
59
 
60
60
  # iterate over columns
61
- x, col_count = 0, 0
61
+ x = 0
62
+ col_count = 0
62
63
  while x < width
63
64
  # iterate over rows
64
- y, row_count = 0, 0
65
+ y = 0
66
+ row_count = 0
65
67
  while y < height
66
68
  dest_path = File.join(current_level_storage_dir, "#{col_count}_#{row_count}.#{@tile_format}")
67
69
  tile_width, tile_height = tile_dimensions(x, y, @tile_size, @tile_overlap)
@@ -94,13 +96,13 @@ module DZT
94
96
  tile_width = (x > 0) ? overlapping_tile_size : border_tile_size
95
97
  tile_height = (y > 0) ? overlapping_tile_size : border_tile_size
96
98
 
97
- return tile_width, tile_height
99
+ [tile_width, tile_height]
98
100
  end
99
101
 
100
102
  # Calculates how often an image with given dimension can
101
103
  # be divided by two until 1x1 px are reached.
102
104
  def max_level(width, height)
103
- return (Math.log([width, height].max) / Math.log(2)).ceil
105
+ (Math.log([width, height].max) / Math.log(2)).ceil
104
106
  end
105
107
 
106
108
  # Crops part of src image and writes it to dest path.
@@ -114,10 +116,10 @@ module DZT
114
116
  if src.is_a? Magick::Image
115
117
  img = src
116
118
  else
117
- img = Magick::Image::read(src).first
119
+ img = Magick::Image.read(src).first
118
120
  end
119
121
 
120
- quality = quality * 100 if quality < 1
122
+ quality *= 100 if quality < 1
121
123
 
122
124
  # The crop method retains the offset information in the cropped image.
123
125
  # To reset the offset data, adding true as the last argument to crop.
data/lib/dzt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module DZT
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dzt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-02 00:00:00.000000000 Z
11
+ date: 2015-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rmagick
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  description:
@@ -66,17 +66,17 @@ require_paths:
66
66
  - lib
67
67
  required_ruby_version: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - ">="
69
+ - - '>='
70
70
  - !ruby/object:Gem::Version
71
71
  version: '0'
72
72
  required_rubygems_version: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
74
+ - - '>='
75
75
  - !ruby/object:Gem::Version
76
76
  version: 1.3.6
77
77
  requirements: []
78
78
  rubyforge_project:
79
- rubygems_version: 2.2.2
79
+ rubygems_version: 2.4.5
80
80
  signing_key:
81
81
  specification_version: 4
82
82
  summary: Tile images for deep-zoom.