Подтвердить что ты не робот

Как загрузить изображение с помощью Ruby?

Я хочу загрузить эту фотографию с помощью Ruby. Как это сделать?

http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg

Я использую Mac OS.

4b9b3361

Ответ 1


require "open-uri"

open("your-url") {|f|
   File.open("whatever_file.jpg","wb") do |file|
     file.puts f.read
   end
}


Ответ 2

Попробуйте использовать драгоценный камень Mechanize:

Начните с: sudo gem install mechanize, чтобы установить Mechanize.

Тогда:

require 'rubygems'
require 'mechanize'

agent = Mechanize.new
link = 'http://www.asite.com/pic.jpg'
agent.get(link).save "images/pic.jpg" 

EDIT: Чтобы сделать вещи чище, я предлагаю вам использовать имя файла, когда вы сохраняете изображение. У меня была проблема с сохранением объемных изображений, потому что они не были правильно сформированы. Изображения были сохранены следующим образом:

#pic.jpg(1)
#pic.jpg(2)
#etc.

Вот почему вы, вероятно, должны использовать имя изображения в качестве имени файла следующим образом:

agent.get(src).save "images/#{File.basename(url)}"

File.basename принимает URL-адрес изображения и просто возвращает фактическое имя изображения:

File.basename("http://www.asite.com/pic.jpg")
# returns the image name
pic.jpg

Ответ 3

Если вы хотите загрузить все изображения на одной странице, вы можете использовать драгоценный камень image_downloader:

require 'rubygems'
require 'image_downloader'

downloader = ImageDownloader::Process.new('www.test.com','img_dir/')

downloader.parse(:any_looks_like_image => true)

downloader.download()

Ответ 4

%x(wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg)

или

`wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg`

Ответ 5

Самый простой способ - потребовать open-uri и использовать его с предыдущим ответом или использовать также предоставленный Net:: HTTP-модуль с его методом get.

Ответ 6

Чтобы сделать вещи более чистыми, я предлагаю вам использовать имя файла при сохранении изображения. У меня была проблема с сохранением объемных изображений, потому что они не были правильно сформированы. Изображения были сохранены следующим образом:

#pic.jpg(1)
#pic.jpg(2)
#etc.

Вот почему вы, вероятно, должны использовать имя изображения в качестве имени файла следующим образом:

src = 'http://www.asite.com/pic.jpg'    
agent.get(src).save "#{folder}/#{File.basename(src)}"

File.basename принимает URL-адрес изображения и просто возвращает фактическое имя изображения:

File.basename("http://www.asite.com/pic.jpg")
# returns the image name
pic.jpg

Ответ 7

Существует драгоценный камень, называемый down который прост в использовании.

Во-первых, установите этот драгоценный камень с помощью gem install down.

Затем:

require "down"
file = Down.download("http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg")

Вы можете прочитать больше об этом драгоценном камне в его репозитории на github https://github.com/janko-m/down.

Ответ 8

Точно так же вы загружаете что-нибудь еще. Net:: HTTP