SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|

2014-08-08(Fri) エンジニヤの宿題(の手伝い)

  先日の鉄塔探検の結果をまとめなければならないのだが、えらい枚数の写真を取ったもんで、写真屋でプリントしてもらうのは鉄塔の写真だけ、とちょっとケチってしまった。

  そうなると、鉄塔の看板の写真ほかは、おウチのプリンタで印刷しなければならんのだが、そう大きくプリントする必要はなく、また、1枚ずつプリントするのも面倒かつ無駄なので、ここは「n in one印刷」をすべき状況……しかし、GIMPほか、まともに写真を印刷できるアプリにそのような機能はない(はず)。

  というわけで、画像をn in oneするスクリプトを作ってみた。印刷後、切り分けられるように、余白を設ける機能つき。ただし、画像の向きは自動調整だが、サイズは揃っている必要がある。

  画像の説明

  サクサク印刷して、ジョキジョキ切って、ノートにペタペタ。鉄塔探検レポートの完成である。

  画像の説明

  早速、以前に作ったGoogleMapをつなげるスクリプトが役に立って、鉄塔地図もサクっと作ることもできた。

  ……つーか、こういう時、エンジニヤでない一般ピープルは、どのように問題を解決するのだろうなぁ……スクリプトを載せておく。

 #!/usr/bin/env ruby
 # coding: utf-8
 
 # A4: 210 x 297 mm (300dpi)
 #   x = 210; need_x = (x * 300 / 25.4).to_i
 #   y = 297; need_y = (y * 300 / 25.4).to_i
 #   d = 1; (4..8).each {|a|
 #       puts '# A%s: %3d x %3d mm, %4d x %4d dot (%2d in one)' % [a, x / (it = Math.sqrt(d)), y / it, need_x / it, need_y / it, d]; d *= 2
 #   }
 # A4: 210 x 297 mm, 2480 x 3507 dot ( 1 in one)
 # A5: 148 x 210 mm, 1753 x 2479 dot ( 2 in one)
 # A6: 105 x 148 mm, 1240 x 1753 dot ( 4 in one)
 #  L:  89 x 127 mm
 # A7:  74 x 105 mm,  876 x 1239 dot ( 8 in one)
 # A8:  52 x  74 mm,  620 x  876 dot (16 in one)
 
 require 'RMagick'   # http://www.simplesystems.org/RMagick/doc/index.html
 
 if(ARGV.size == 0)
     abort(<<USAGE)
 Usage: n_in_one dir_name
 USAGE
 end
 
 max_x = 4; max_y = 4; pad = 64; result_suffix = '_n_in_one.jpg'; dummy_file = nil
 
 files = []; Dir.open(ARGV[0]).each {|f|
     f =~ /^\./ or files << f
 }; files.sort!
 
 while(files.size > 0)
     dummy_file ||= files[0]
     result_file = target_file = nil
     yimages = Magick::ImageList.new; (0...max_y).each {|y|
         ximages = Magick::ImageList.new; (0...max_x).each {|x|
             p (target_file = files.shift || dummy_file)
             result_file ||= target_file
             ximages << Magick::Image.read(ARGV[0] + '/' + target_file)[0]
             ximages.last.columns > ximages.last.rows and ximages.last.rotate!(90)
             ximages.new_image(pad, pad) if(pad and x != max_x - 1)
         }
         yimages << ximages.append(vert = false)
         yimages.new_image(pad, pad) if(pad and y != max_y - 1)
     }
     yimages.append(vert = true).write(result_file + result_suffix)
 end
 
 __END__
本日のツッコミ(全1件) [ツッコミを入れる]
とおりすがり (2014-10-07(Tue) 10:11)

エンジニヤじゃない逸般人はn-in-one印刷できるフリーソフトとかを探すか、写真管理ソフトの機能でナントカしようとしますね。