Я пытаюсь написать скрипт на ruby для сжатия всех изображений до 500 КБ. Я нашел способ сделать это в терминале, используя mogrify -define Jpeg:extent=500kb *.jpg
, но я не нашел ничего, что говорило бы о сжатии всех изображений как минимум до 500 КБ внутри скрипта ruby. Я также пытался использовать
require 'fastimage'
#test key
Tinify.key = "myKey"
i = 0
Dir.glob("app/assets/images/*.{jpg,png}") do |item|
#only do 50 images at a time
break if i == 10
#ignorre directories and original files
next if item == '.' or item == '..' or item.include? "original"
#ignore iamges less than 50KB
filesize = (File.size(item) * 0.001).floor
next if filesize < 50
#ignore images that are smaller thatn 100KB and over 600px large
size = (FastImage.size(item).inject(:+))
next if size >= 600 and filesize < 100
i = i + 1
source = Tinify.from_file(item)
source.to_file(item)
new_filesize = (File.size(item) * 0.001).floor
puts "Converted: #{item}"
puts "Original: #{filesize} Optimized #{new_filesize}"
end
puts "All done!"
Я надеялся, что кто-нибудь поможет мне отладить это, чтобы действительно сжимать изображения, а не просто отслеживать их. Заранее спасибо