image_size_optimizer 0.0.0

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/image_size_optimizer.rb +66 -0
  3. metadata +45 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f59cc308556bc5121adb2c8dd4bf66124989924a
4
+ data.tar.gz: b9f81ba6c032245b0210a0a1ab4bb658d63353b1
5
+ SHA512:
6
+ metadata.gz: 4aca413b04e1c438796bb4992967cc006dc7fc86f802e5fe198d2a478963be6f18da7aeee9f8b7fc5622fcd1e14bacd20a3e85a25a8d8ca13877b242fa0c7b79
7
+ data.tar.gz: 9a72d6f318ee626bc7a64bd310f726958df6c69f5e771869998d44461a16738b2d0d268b401179589cb7eb747961c9537ebdc0169e19e369a5fb03accaee8eb9
@@ -0,0 +1,66 @@
1
+ class ImageSizeOptimizer
2
+ require 'open_uri'
3
+ def self.hi
4
+ puts "Hello world!"
5
+ end
6
+
7
+ def self.process_image(s3_url, file_path = 'public', max_size, quality, bucket_name, quality_counter)
8
+ quality_counter = quality_counter ? quality_counter.to_i : 90
9
+ file_name = s3_url.split("/").last.split("?").first
10
+ a = s3_url.split("#{bucket_name}/").last.split("/")
11
+ a.pop
12
+ bucket_path = a.join('/')
13
+ new_file_name = file_name.split('.').first + '-high.' + file_name.split('.').last
14
+
15
+ ImageSizeOptimizer.read_image(s3_url, file_path, file_name)
16
+ original_qlity = ImageSizeOptimizer.get_quality(file_path, file_name)
17
+ current_size = ImageSizeOptimizer.get_size(file_path, file_name)
18
+
19
+ if original_qlity > quality
20
+ while true do
21
+ ImageSizeOptimizer.convert_image(file_path, file_name, new_file_name, quality_counter)
22
+ current_size = ImageSizeOptimizer.get_size(file_path, new_file_name)
23
+ unless current_size > max_size
24
+ break
25
+ else
26
+ quality_counter = quality_counter - 1
27
+ end
28
+ end
29
+ ImageSizeOptimizer.upload_to_s3(bucket_name, bucket_path, file_path, file_name, new_file_name, quality_counter)
30
+ `rm -r "#{file_path}/#{file_name}"`
31
+ `rm -r "#{file_path}/#{new_file_name}"`
32
+ end
33
+ end
34
+
35
+ def self.upload_to_s3(bucket_name, bucket_path, file_path, file_name, new_file_name, quality_counter)
36
+ ImageSizeOptimizer.convert_image(file_path, file_name, new_file_name, quality_counter)
37
+ s3 = AWS::S3.new
38
+ key = File.basename(new_file_name)
39
+ obj = s3.buckets[bucket_name].objects["#{bucket_path}/"+new_file_name]
40
+ file = File.open(file_path+'/'+new_file_name, 'rb')
41
+ obj.write(file)
42
+ end
43
+
44
+ def self.convert_image(file_path, file_name, new_file_name, quality_counter)
45
+ `convert -quality "#{quality_counter}" "#{file_path}/#{file_name}" "#{file_path}/#{new_file_name}"`
46
+ end
47
+
48
+
49
+ def self.read_image(s3_url, file_path, file_name)
50
+ data1 = open("#{s3_url}").read
51
+ z = File.open("#{file_path}/#{file_name}", 'wb') do |f|
52
+ f.write(data1)
53
+ f.close
54
+ end
55
+ end
56
+
57
+ def self.get_quality(file_path, file_name)
58
+ `identify -verbose "#{file_path}/#{file_name}" | grep 'Quality'`.split(':').last.split('KB').first.to_f
59
+ end
60
+
61
+ def self.get_size(file_path, file_name)
62
+ a = `identify -verbose "#{file_path}/#{file_name}" | grep 'Filesize'`.split(':').last
63
+ size = (a.include? 'MB')? (a.split('MB').first.to_f * 1024) : a.split('KB').first.to_f
64
+ end
65
+
66
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: image_size_optimizer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Shiv Kumar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-14 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: image_size_optimizer is the gem to optimize your image size by reducing
14
+ the quality, so that it can be load easily in the slow internet connection
15
+ email: shiv@ascratech.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/image_size_optimizer.rb
21
+ homepage: http://rubygems.org/gems/image_size_optimizer
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.4.6
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Image Optimzer!
45
+ test_files: []