Вот фрагмент кода, который работает. Я сделал это в sinatra исключительно для того, чтобы он работал автономно, но содержимое блока get - это важные строки.
require 'sinatra'
require 'net/http'
require 'base64'
get '/' do
base_image = Net::HTTP.get(URI.parse('http://mystatus.skype.com/mediumicon/Gazler'))
"<img src=\"data:image/png;base64,#{Base64.encode64(base_image)}\">"
end
Для этого используется кодировка base64 источника. Вы можете прочитать больше здесь .
Обратите внимание, что это может не работать в старых версиях IE.
Одним из решений этого было бы кодирование base64 возвращенного изображения, как указано выше, и сохранение всех возможных изображений в виде статуса, а затем сравнение с результатом. Очевидно, что каждый раз это будет выполняться довольно медленно, поэтому вы захотите сохранить base64 изображений локально, а затем выполнить поиск по строке base64.
Надеюсь, это имеет смысл.
EDIT
В качестве вспомогательного метода:
def skype_status(username)
base_image = Net::HTTP.get(URI.parse("http://mystatus.skype.com/mediumicon/#{username}"))
content_tag("img", :src =>"data:image/png;base64,#{Base64.encode64(base_image)}")
end