Module: AndroidImgResizer

Defined in:
lib/android_img_resizer/version.rb,
lib/android_img_resizer/android_img_resizer.rb

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.clean_files(imgtoclean) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/android_img_resizer/android_img_resizer.rb', line 123

def self.clean_files(imgtoclean)
  if File::exists?("res/drawable-xxhdpi/"+imgtoclean)
    File.delete("res/drawable-xxhdpi/"+imgtoclean) 
  end
  if File::exists?("res/drawable-xhdpi/"+imgtoclean)
    File.delete("res/drawable-xhdpi/"+imgtoclean)  
  end
  if File::exists?("res/drawable-hdpi/"+imgtoclean)
    File.delete("res/drawable-hdpi/"+imgtoclean)   
  end
  if File::exists?("res/drawable-mdpi/"+imgtoclean)
    File.delete("res/drawable-mdpi/"+imgtoclean)   
  end
  if File::exists?("res/drawable-ldpi/"+imgtoclean)        
    File.delete("res/drawable-ldpi/"+imgtoclean)   
  end
end

.list_images(base_dpi = "xxhdpi") ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/android_img_resizer/android_img_resizer.rb', line 28

def self.list_images(base_dpi="xxhdpi")
  return if !self.verify_android_project
  Dir::chdir("res/drawable-"+base_dpi+"/")
  files=Dir["*.{png,jpg,gif,bitmap}"] 
  files.each do |entry|
    puts "Drawable File = #{entry}"
  end
end

.resize_all_images(base_dpi = "xxhdpi") ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/android_img_resizer/android_img_resizer.rb', line 37

def self.resize_all_images(base_dpi="xxhdpi")
  return if !self.verify_android_project

  baseline_path = "res/drawable-"+base_dpi+"/"
  if !File::exists?(baseline_path)
    puts "Baseline path #{baseline_path} doesnt exist"
    exit(1)
  end

  Dir::chdir(baseline_path)
  files=Dir["*.{png,jpg,gif,bitmap}"]
  Dir::chdir("../../")
  files.each do |entry|      
    resize_image(entry,base_dpi)
  end
end

.resize_image(imageFile, base_dpi = "xxhdpi") ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/android_img_resizer/android_img_resizer.rb', line 62

def self.resize_image(imageFile,base_dpi="xxhdpi")
  return if !self.verify_android_project
  
  full_path = "res/drawable-#{base_dpi}/#{imageFile}"
  
  if !File::exists?(full_path)
    puts "Image #{full_path} doesnt exist"
    exit(1) 
  end

  rimg = Magick::Image.read(full_path).first 
  puts "Resizing Image = #{imageFile} with size = #{rimg.columns}x#{rimg.rows} from #{base_dpi}"      
  
  # Scale Down images in res/drawable-xxxhdpi to the lower dpis
  if base_dpi == 'xxxhdpi'             
    self.scale_xxxhdpi(imageFile,rimg)    
  # Scale Down images in res/drawable-xxhdpi to the lower dpis      
  elsif base_dpi == 'xxhdpi' 
    self.scale_xxhdpi(imageFile,rimg)                
  # Scale Down images in res/drawable-xhdpi to the lower dpis            
  elsif base_dpi == 'xhdpi'
    self.scale_xhdpi(imageFile,rimg)
  # Scale Down images in res/drawable-hdpi to the lower dpis
  else     	    
    self.scale_hdpi(imageFile,rimg)     
  end      
 
end

.scale(imageFile, rimg, factor, tag) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/android_img_resizer/android_img_resizer.rb', line 54

def self.scale(imageFile,rimg,factor,tag)
  xsize=rimg.columns*factor
  ysize=rimg.rows*factor
  puts "Image = #{imageFile} #{tag} = #{xsize.to_i}x#{ysize.to_i}"
  hdpi = rimg.scale(xsize.to_i,ysize.to_i)
  hdpi.write "res/drawable-#{tag}/"+imageFile     
end

.scale_hdpi(imageFile, rimg) ⇒ Object



118
119
120
121
# File 'lib/android_img_resizer/android_img_resizer.rb', line 118

def self.scale_hdpi(imageFile,rimg)
  # xdpi version 2/3 - 1.5x mdpi
  self.scale(imageFile,rimg,2.0/3,"mdpi")   
end

.scale_xhdpi(imageFile, rimg) ⇒ Object



111
112
113
114
115
116
# File 'lib/android_img_resizer/android_img_resizer.rb', line 111

def self.scale_xhdpi(imageFile,rimg)
  # xdpi version 0.75 - 1.5x mdpi
  self.scale(imageFile,rimg,0.75,"hdpi")
  # xdpi version 0.5 - 1.0x mdpi
  self.scale(imageFile,rimg,0.5,"mdpi")    
end

.scale_xxhdpi(imageFile, rimg) ⇒ Object



102
103
104
105
106
107
108
109
# File 'lib/android_img_resizer/android_img_resizer.rb', line 102

def self.scale_xxhdpi(imageFile,rimg)
  # xdpi version 2/3 - 2.0x mdpi
  self.scale(imageFile,rimg,2.0/3,"xhdpi")
  # hdpi version 0.5 - 1.5x mdpi
  self.scale(imageFile,rimg,0.5,"hdpi")
  # hdpi version 1/3 - 1.0x mdpi      
  self.scale(imageFile,rimg,1.0/3,"mdpi")
end

.scale_xxxhdpi(imageFile, rimg) ⇒ Object



91
92
93
94
95
96
97
98
99
100
# File 'lib/android_img_resizer/android_img_resizer.rb', line 91

def self.scale_xxxhdpi(imageFile,rimg)
  # xxdpi version 3/4 - 3.0x mdpi
  self.scale(imageFile,rimg,0.75,"xxhdpi")
  # xxdpi version 2/4 - 2.0x mdpi      
  self.scale(imageFile,rimg,0.5,"xhdpi")
  # xxdpi version 1.5/4 - 1.5x mdpi      
  self.scale(imageFile,rimg,0.375,"hdpi")
  # xxdpi version 1/4 - 1.0x mdpi      
  self.scale(imageFile,rimg,0.25,"mdpi")  
end

.verify_android_projectObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/android_img_resizer/android_img_resizer.rb', line 6

def self.verify_android_project
	files=["AndroidManifest.xml"]
	directories=["res","res/drawable-hdpi","res/drawable-xhdpi","res/drawable-mdpi","src"]
	
  files.each do |file|
    if !File::exists?(file)
      puts "Error: This is not a Android project Directory\n"
      puts "Error: File not exists #{file} \n"
      return false
    end
  end

  directories.each do |directory|
    if  !File::directory?(directory)
      puts "Error: This is not a Android project Directory\n"
      puts "Error: Directory not exists #{directory} \n"
      return false
    end
  end
  return true
end