hugo_insert_image.rb

Page content

画像をリサイズして取ってくるやつその2

  require 'rmagick'
  require 'date'
  require 'fileutils'
  require 'optparse'
  # gem install clipboard; 要 gem
  # sudo apt install xsel; 要 xsel
  require 'clipboard'

  # default resize 大きさ = 480
  mysize = 480

  opt = OptionParser.new
  opt.on('-r', '--resize VALUE', 'リサイズする大きさ(px)') { |v| mysize = v.to_i }
  # opt.on('-t', '--target DIR',   '出力先ディレクトリ') { |v| target = v.to_s }

  begin
     opt.parse(ARGV)
  rescue OptionParser::InvalidOption => e
     abort "無効なオプション指定が含まれています"
  end

  # 移動先は /yymmdd/
  date_dir = %Q(#{Date.today.strftime("%Y%m%d")})
  # target_dir = ~/blog/static/images/yymmdd
  target_dir = File.expand_path("~/blog/static/images/#{date_dir}")
  # ディレクトリが無ければ作る
  FileUtils.mkdir_p(target_dir) unless File.exist?(target_dir)

  ARGV.each do |f|
     if File.extname(f).downcase =~ /.jpe?g|.png/ then #add .png
        img = Magick::ImageList.new(f)
        # mysizeより小さい画像は大きくなるのでresizeしない。
        img = img.resize_to_fit(mysize,  mysize) if [img.rows,  img.columns].max > mysize
        img = img.auto_orient.strip!
        image_file_name = %Q(#{File.basename(f, ".*")}.webp)
        img.write(target_dir + "/" +  image_file_name)
        # Clipboardにshortcodeを入れる 実際の使用には '/*'と'*/'を削除する必要あり
        Clipboard.copy(%Q({{< figure src="/images/#{date_dir}/#{image_file_name}" alt="" title="" width="#{img.rows}" height="#{img.columns}" >}}))
        # メッセージ
        puts %Q[#{Clipboard.paste} が clipboard に入ったよ〜]
     end
  end

変更履歴

2024-10-14 Monday

画像サイズを指定する

2024-08-22

ちょっと短くなった

2024-08-20

コピペでコンテンツに貼り付けできるようにしてみた。

2024-08-19

いまどきwebの画像はWebPでしょ対応版

  # img_new.write(targetdir + "#{File.basename(f)}")
  # webp 決め打ちバージョン
  img_new.write(targetdir + "#{File.basename(f, ".*")}.webp")

2024−06−16

このメソッドは Ruby 2.1 から deprecated です。File.exist? を使用してください。 – File.exists? (Ruby 3.1 リファレンスマニュアル)

ということで File.exists?(targetdir) => File.exist?(targetdir) に修正。

2024−06−05

前に作ったやつ、今頃やっと使うようになった。いろいろイケてないとこがあった。

いまいちなところ

  • jpeg以外の画像をリサイズしない
  • 指定サイズより小さい画像を大きくしてしまう
  • 縦長画像が横向きになる

やってみた

こんな感じになった。

  • 縦長画像
いただきもの
  • ちっちゃい画像(png)