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的问题,不得已,重新运行,多次才处理完所有的图片。原因还在查找中。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值