Ruby on rails 获取远程图像尺寸的快速方法

Ruby on rails 获取远程图像尺寸的快速方法,ruby-on-rails,ruby,image,open-uri,Ruby On Rails,Ruby,Image,Open Uri,我使用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 |

我使用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
需要“打开uri”
需要“图像大小”
data=Nokogiri::HTML(打开(url))
图像=[]
forcenocache=Time.now.to_i#没有缓存,因为jquery加载事件不会为缓存的图像触发
data.css(“img”)。每个do |图像|
image\u path=URI.join(site,URI.encode(image[:src]))
开放式(图像路径,“rb”)do | fh|
image\u size=ImageSize.new(fh.read).get\u size()
除非图像大小[0]<200 | |图像大小[1]<100
image_element=“”
images.push(图像元素)
结束
结束
结束
我尝试在前端使用JS来检查图像尺寸,但一次可以加载多少图像似乎受到浏览器的限制


使用imagesize要比使用JS慢得多。有更好更快的方法吗?

我想这款宝石能满足你的需求

FastImage可查找文件的大小或类型 通过获取为给定uri的图像 少


我的建议是——首先找到页面上的所有图片链接,并过滤掉重复的图片。也许,只加载一段图像就可以了(前几个千字节)-试试这个。此外,还可以使用线程并行检查多个图像。可能,在一个设置了维度的页面上有一些img标记。如何使用开放uri读取图像的前n KB以获得大小?这里是我的相关问题的链接,我只想说。。。我偶然发现了这个答案,也因此得到了这个宝石。太不可思议了+1 +1 +1 +1 +1!!!