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)