Написание скрипта для сжатия всех изображений до 500 КБ в скрипте Rails.

avatar
Colton Gibson
9 августа 2021 в 01:38
60
0
0

Я пытаюсь написать скрипт на 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!"

Я надеялся, что кто-нибудь поможет мне отладить это, чтобы действительно сжимать изображения, а не просто отслеживать их. Заранее спасибо

Источник

Ответы (0)