2011-09-01 9 views
11

नहीं पढ़ सकते हैं मेरे env लिनक्स centos है, और गहरे लाल रंग का 1.8.7 का उपयोग करें, और कोड नीचे यहाँ है:RMagick दूरस्थ छवि

in `read': no decode delegate for this image format `//image.domain.com/images/random_bg/01.jpg' @ error/constitute.c/ReadImage/532 (Magick::ImageMagickError), 

लेकिन:

require 'rubygems' 
require 'RMagick' 
Magick::Image.read("http://image.domain.com/image.darenhui.com/images/random_bg/01.jpg")[0] 

यह नीचे की तरह त्रुटि फेंकता अगर मैं स्थानीय से पढ़ता हूं:

require 'rubygems' 
    require 'RMagick' 
    Magick::Image.read("/local/staticimages/random_bg/01.jpg")[0] 

सबकुछ ठीक है। मैं -List स्वरूप की पहचान चलाने के लिए और नीचे देखें:

 JPEG* JPEG  rw- Joint Photographic Experts Group JFIF format (62) 
    JPG* JPEG  rw- Joint Photographic Experts Group JFIF format (62) 

लेकिन जब मैं "http://image.domain.com/image.darenhui.com/images/random_bg/01.jpg" के लिए पहचान द्वारा परीक्षण विफल, लेकिन "/local/staticimages/random_bg/01.jpg" के लिए सफलता

कोई मुझे कुछ सुराग दे सकते हैं? पहले ही, आपका बहुत धन्यवाद।

+0

क्या होता है अगर आप कॉपी और उस URL को पेस्ट करें और इसे फ़ीड wget के लिए? – Yahia

+0

@Yahia आपके उत्तर के लिए धन्यवाद, मैं wget http://image.domain.com/images/random_bg/06.jpg की कोशिश की, यह ठीक है। – ywenbo

+0

नीचे मेरा उत्तर ... – Yahia

उत्तर

3

जहां तक ​​मेरा Magick::Image.read देख सकते हैं यूआरएल का समर्थन नहीं करता, केवल फ़ाइलें/फ़ाइल हैंडल - देख http://www.imagemagick.org/RMagick/doc/image1.html#read जहां यह कहना है कि यह

निर्दिष्ट फ़ाइल से सभी छवियों को पढ़ता है।

यह सी समारोह ReadImage जो यूआरएल का समर्थन नहीं करता द्वारा कार्यान्वित किया जाता - लाइन 394 here पर ImageMagick स्रोत देखें।

आप एक URL आप किसी भी तरह छवि डाउनलोड करने की आवश्यकता से एक छवि को खोलने के लिए चाहते हैं - एक फ़ाइल या एक धारा के लिए ... तो आप उस फ़ाइल या Magick...

+1

छवि देखते हैं।पढ़ें अब सीधे यूआरएल से पढ़ने का समर्थन करता है। –

43

Magick::Image.read को स्ट्रीम URL का समर्थन नहीं करता फ़ीड कर सकते हैं लिंक। मई 2014

require 'rubygems' 
require 'RMagick' 
require "open-uri" 


image = Magick::ImageList.new 
urlimage = open("http://www.jewelinfo4u.com/images/Gallery/ruby.jpg") # Image Remote URL 
image.from_blob(urlimage.read) 

# crop = image.crop(10,10,200,300) You can crop this image too 
# crop.write('C:/nameofyourNewImage.jpg') If you want to save the image you can use this line in windows 
6

फास्ट आगे, और मैं बस के लिए ...

require 'rubygems' 
require 'RMagick' 
include Magick 
image = ImageList.new("http://www.jewelinfo4u.com/images/Gallery/ruby.jpg") 

कर सकती हूं और यह सिर्फ काम करता है: लेकिन आप गहरे लाल रंग का open विधि का उपयोग कर दूरस्थ छवि पढ़ सकते हैं। अच्छा लगता है।

संपादित करें (ImageMagick 6.8.8-9 प्रश्न 16 पर परीक्षण किया गया): Heroku देवदार ढेर पर काम नहीं लगता है (ImageMagick 6.5.7-8 2012-08-17 प्रश्न 16) हालांकि। :/

+0

यदि आपको छवि का उपयोग करने की आवश्यकता है, तो उपर्युक्त करें और बस एक छवि = image_list.cur_image करें और आप – bobbdelsol

+0

पर जाने के लिए अच्छे हैं, अगर आपका यूआरएल HTTPS है, तो यह भी काम नहीं करता है, जैसा कि मैंने अभी पाया है। – TGPrankster

+0

यह मेरे लिए @TGPrankster करता है। यह संभव है कि आपने पोस्ट करने के बाद से इस मुद्दे को ठीक किया है – CoupDeMistral

2

आप open-uri के साथ एक यूआरएल से एक फ़ाइल पढ़ सकते हैं, फिर उसे Rmagick के Image::from_blob में फ़ीड करें।

उदाहरण:

require 'open-uri' 
require 'rubygems' 
require 'Rmagick' 

image_url = 'http://example.com/image.jpg' 

image = Magick::Image.from_blob(open(image_url).read).first 

ध्यान दें कि आप अतिरिक्त open HTTP अनुरोध से उत्पन्न होने वाले अपवादों को संभालने के लिए ध्यान रखना चाहिए। हां, अगर आपको 404 या गैर-छवि प्रतिक्रिया मिलती है तो क्या होता है?

संबंधित मुद्दे