20
我使用图像化宝石来检查远程图像的大小,然后只将足够大的图像插入到数组中。快速获取远程图像尺寸的方法
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慢得多。任何更好更快的方法来做到这一点?
我建议取为 小发现给它的URI的 图像的大小或类型是 - 在第一找到页面上的所有图像链接并过滤掉重复项。很可能,只加载一张图片将会起作用(少数第一千字节) - 试试这个。另外,您可以使用线程并行检查多个图像。可能在设置尺寸的页面上有一些img标签。 – taro 2011-05-08 17:46:18
为了使用open-uri获得大小,人们将如何去读取前n千字节的图像? – 2011-05-10 05:00:11
这里是链接到我的相关问题http://stackoverflow.com/questions/1120350/how-to-download-via-http-only-piece-of-big-file-with-ruby – taro 2011-05-10 12:32:32