RMagickを使って画像を一括してリサイズするスクリプト。Obsidianへ移行したメモに添付されていた画像サイズを圧縮するためにやっつけで作成

require 'RMagick'
include Magick
 
MAX_PIXEL = 800
MAX_FILE_SIZE = 300000
 
ARGV.each do |f|
  next unless %w(.jpeg .jpg .png .heic .webp).index File.extname(f).downcase
  size = File.size(f)
  next if size < MAX_FILE_SIZE
 
  img = Magick::Image.read(f).first
  next if img.columns <= MAX_PIXEL && img.rows <= MAX_PIXEL
 
  img.resize_to_fit(MAX_PIXEL, MAX_PIXEL).write(f)
  puts "#{f}: #{size} -> #{File.size(f)}"
end