diff --git a/lib/fastimage/fastimage.rb b/lib/fastimage/fastimage.rb
index 61f8b41..90d13c8 100644
--- a/lib/fastimage/fastimage.rb
+++ b/lib/fastimage/fastimage.rb
@@ -291,6 +291,8 @@ def escaped_location(location)
   end
 
   def fetch_using_http_from_parsed_uri
+    raise ImageFetchFailure unless @parsed_uri.is_a?(URI::HTTP)
+
     http_header = {'Accept-Encoding' => 'identity'}.merge(@options[:http_header])
 
     setup_http
diff --git a/test/test.rb b/test/test.rb
index 40d2144..169f49b 100644
--- a/test/test.rb
+++ b/test/test.rb
@@ -535,4 +535,9 @@ def test_content_length_after_size
     fi.size
     assert_equal 322, fi.content_length
   end
+  
+  def test_unknown_protocol
+    FakeWeb.register_uri(:get, "http://example.com/test", body: "", location: "hhttp://example.com", :status => 301)
+    assert_nil FastImage.size("http://example.com/test")
+  end
 end