我的env是Linux centos,使用ruby 1.8.7,代码如下:
require 'rubygems'
require 'RMagick'
Magick::Image.read("http://image.domain.com/image.darenhui.com/images/random_bg/01.jpg")[0]
它会抛出如下错误:
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("/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 :(得分:44)
Magick::Image.read
不支持网址链接。但您可以使用ruby open
方法读取远程图像:
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
答案 1 :(得分:6)
快进到2014年5月,我能够......
require 'rubygems'
require 'RMagick'
include Magick
image = ImageList.new("http://www.jewelinfo4u.com/images/Gallery/ruby.jpg")
它只是有效。感觉不错。
(在ImageMagick 6.8.8-9 Q16上测试)
编辑:虽然似乎没有在Heroku Cedar堆栈上工作(ImageMagick 6.5.7-8 2012-08-17 Q16)。 :/
答案 2 :(得分:4)
据我所知Magick::Image.read
不支持网址,只支持文件/文件句柄 - 请参阅http://www.imagemagick.org/RMagick/doc/image1.html#read所在的位置
从指定文件中读取所有图像。
它由不支持网址的C函数ReadImage
实现 - 请参阅第394行的here中的ImageMagick来源。
如果您想要从URL打开图像,您需要以某种方式下载图像 - 文件或流...然后您可以将该文件或流提供给Magick...
答案 3 :(得分: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或非图像响应会发生什么?
答案 4 :(得分:0)
从 function getPropertyByString(object, propString) {
let value = object;
const props = propString.split('.');
for (let index = 0; index < props.length; index += 1) {
if (props[index] === undefined) break;
value = value[props[index]];
}
return value;
};
const object = {
name: 'any_name',
address: {
number: 77,
test: {
name: 'test'
}
}
}
console.log(getPropertyByString(object, 'address.test.name'))
// test
开始,rmagick (4.1.2)
支持URL链接。就我而言,我正在从AWS S3中读取图像,特别是Image.read
文件。这是通过本地主机。更新到最新版本应该可以解决此问题。