22

我正在使用 imagesize gem 来检查远程图像的大小,然后只将足够大的图像推送到数组中。

require 'open-uri'
require 'image_size'
data = Nokogiri::HTML(open(url))
images = []
forcenocache = Time.now.to_i # No cache because jquery load event doesn't fire for cached images
data.css("img").each do |image|
  image_path = URI.join(site, URI.encode(image[:src]))
  open(image_path, "rb") do |fh|
    image_size = ImageSize.new(fh.read).get_size()
    unless image_size[0] < 200 || image_size[1] < 100
      image_element = "<img src=\"#{image_path}?#{forcenocache}\">"
      images.push(image_element)
    end
  end
end

我尝试在前端使用 JS 来检查图像尺寸,但一次加载多少图像似乎存在浏览器限制。

使用 imagesize 比使用 JS 慢得多。有没有更好更快的方法来做到这一点?

4

1 回答 1

50

我认为这个宝石可以满足您的需求https://github.com/sdsykes/fastimage

FastImage 通过尽可能少地获取所需的 uri 来查找图像的大小或类型

于 2011-05-18T19:43:42.080 回答