Code:
- require 'RMagick'
- path = "E:/photo/20091122/"
- resize_path = "E:/photo/20091122/"
- i = 0
- Dir.foreach(path) do |d|
- puts d
- if d.split(".").last =~ /jpg/i
- i += 1
- filepath = path + d.to_s
- new_path = resize_path + "resize/"+ i.to_s + "_" + d.to_s
- puts new_path
- original_image = Magick::Image.read(filepath).first
- width = original_image.columns
- height = original_image.rows
- img_size = [1024,768]
- min_size = img_size[0]
- size = width >= height ? [min_size , (min_size*height.to_f)/width.to_f] : [ (min_size*width.to_f)/height.to_f , min_size]
- width, height = size[0] , size[1]
- resize_image = original_image.resize(width,height)
- FileUtils.mkdir_p(File.dirname(new_path)) rescue nil
- resize_image.write(new_path)
- end
- end
周末出去登山,用数码相机拍的, 发现相片上传不到空间去,说单张图片不能超过2M,就自己动手写了个程序批处理压缩到指定大小,刚开始速度还是蛮快的,结果压缩好慢,处理单张图片就要好几秒,最终处理完50多张图片时发现报错:memory reallocate failed。很郁闷,估计是ruby的问题,不得已,重新运行,多次才处理完所有的图片。原因还在查找中。。。