天天看點

RMagick批處理圖檔

Code:

  1.   require 'RMagick'  
  2.   path = "E:/photo/20091122/"  
  3.   resize_path = "E:/photo/20091122/"  
  4.   i = 0  
  5.   Dir.foreach(path) do |d|  
  6.     puts d  
  7.     if d.split(".").last =~ /jpg/i  
  8.       i += 1  
  9.       filepath = path + d.to_s  
  10.       new_path = resize_path + "resize/"+ i.to_s + "_" + d.to_s  
  11.       puts new_path  
  12.       original_image = Magick::Image.read(filepath).first  
  13.       width = original_image.columns  
  14.       height = original_image.rows  
  15.       img_size = [1024,768]  
  16.       min_size = img_size[0]  
  17.       size = width >= height ? [min_size , (min_size*height.to_f)/width.to_f] :  [ (min_size*width.to_f)/height.to_f , min_size]   
  18.       width, height = size[0] , size[1]   
  19.       resize_image = original_image.resize(width,height)  
  20.       FileUtils.mkdir_p(File.dirname(new_path)) rescue nil   
  21.       resize_image.write(new_path)    
  22.     end  
  23.   end  

周末出去登山,用數位相機拍的, 發現相片上傳不到空間去,說單張圖檔不能超過2M,就自己動手寫了個程式批處理壓縮到指定大小,剛開始速度還是蠻快的,結果壓縮好慢,處理單張圖檔就要好幾秒,最終處理完50多張圖檔時發現報錯:memory reallocate failed。很郁悶,估計是ruby的問題,不得已,重新運作,多次才處理完所有的圖檔。原因還在查找中。。。