2011-05-08 24 views
20

Uzaktaki görüntülerin boyutlarını kontrol etmek için görüntü gemini kullanıyorum ve sadece bir dizide yeterince büyük olan resimleri itin. Uzak görüntü boyutlarını elde etmenin hızlı yolu

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 

Ben görüntü boyutlarını kontrol etmek için ön-uç JS kullanarak çalıştı ama aynı anda yüklenebilir kaç görüntüleri bir tarayıcı sınırı var gibi görünüyor.

Görselleştirmeyle yapmak JS'yi kullanmaktan çok daha yavaştır. Bunu yapmak için daha iyi ve daha hızlı yollar?

+0

Benim öneriler gerektiği gibi küçük olarak getirecek şekilde uri verilen resmin boyutunu veya türünü bulur istiyorum ne yapar düşünmek - ilk başta Bir sayfadaki tüm görüntü bağlantılarını bulup kopyaları filtreleyin. Muhtemelen, sadece bir parça resim yükleniyor (birkaç ilk kilobayt) - bunu deneyin. Ayrıca, paralel olarak birden fazla görüntüyü kontrol etmek için iplikleri kullanabilirsiniz. Muhtemelen, boyut ayarlı bir sayfada bazı img etiketleri vardır. – taro

+0

Açık uri kullanarak boyutu almak için resmin ilk n kilobaytını okumaya ne dersiniz? –

+0

Burada ilgili soru için http://stackoverflow.com/questions/1120350/how-to-download-via-http-only-piece-of-big-file-with-ruby – taro

cevap

İlgili konular