# This class is used to download and optimize images. # # I have not had a chance to implement me, and will not for about 3 weeks. # If you are looking for a small project this simple API would be a good stint. # # Implement the following methods. With tests, the tests are a HUGE PITA cause # network, disk and external dependencies are involved. class ImageOptimizer attr_accessor :url, :root_dir # url is a url of an image ex: # 'http://site.com/image.png' # '/uploads/site/image.png' # # root_dir is the path where we # store optimized images def initialize(opts = {}) @url = opts[:url] @root_dir = opts[:root_dir] end # attempt to refresh the original image, if refreshed # remove old downsized copies def refresh_local! end # clear all local copies of the images def clear_local! end # yeild a list of relative paths to local images cached def each_local end # return the path of an optimized image, # if already cached return cached, else download and cache # at the original size. # if size is specified return a resized image # if height or width are nil maintain aspect ratio # # Optimised image is the "most efficient" storage for an image # at the basic level it runs through image_optim https://github.com/toy/image_optim # it also has a failsafe that converts jpg to png or the opposite. if jpg size is 1.5* # as efficient as png it flips formats. def optimized_image_path(width=nil, height=nil) end end