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的問題,不得已,重新運作,多次才處理完所有的圖檔。原因還在查找中。。。