# Nick's web site: imgresize filter. Helper for resizing images during site # compilations for thumbnails, etc. # # Copyright © 2016, 2020 Nick Bowler # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . class ImgResize < Nanoc::Filter identifier :imgresize type :binary def run(filename, params = {}) w = if params[:width] then params[:width].to_i end h = if params[:height] then params[:height].to_i end scale = [w, h && "x", h].join args = ["-scale", scale, filename] case filename when /\.jpg$/ args << "-quality" << "85" end args << output_filename system('gm', 'convert', *args) end end