RMagick批处理图片

来源:互联网 发布:matlab离散数据绘图 编辑:程序博客网 时间:2024/05/22 17:56
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的问题,不得已,重新运行,多次才处理完所有的图片。原因还在查找中。。。