image_size_optimizer 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []