Images.jl:如何从URL“加载”一个`Image`

时间:2018-01-15 23:00:25

标签: image url julia

是否可以使用load从远程网址Image Images.jl,与从本地文件加载的方式相同?

供参考:

using Images
yuss = load("mylocalimage.jpg")  # Hooray
fail = load("https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2@2x.png")  # Sad

2 个答案:

答案 0 :(得分:2)

尝试在问题中使用yuss成功来解决fail问题:

using Images
img = mktemp() do fn,f
    download("https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2@2x.png", fn)
    load(fn)
end

或者不使用外部下载工具,可以使用HTTP包(这也避免了可能会混淆的do语法):

using Images
using HTTP
t = tempname()
HTTP.download("https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2@2x.png", t)
img = load(t)
rm(t)

不可否认,使用临时文件并不是最漂亮的代码。这对Hooray来说足够了吗?

ADDITION

感谢Simon Danish,请查看更短版本的其他答案。

答案 1 :(得分:2)

@Simon Danisch离线给我发了一个很好的解决方案:

julia> using FileIO
julia> download("https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2@2x.png") |> load

显然download()默认创建一个临时文件,并将其全名作为字符串返回。基本上与@Dan Getz的答案相同,但有点简单。

我们必须与文件系统进行交互太糟糕了,但我想现在这样做了。