Julia 从 URL 直接下载图像到内存中

Julia download image from URL directly into memory

我想从网上下载这张图片。 Julia 中有没有一种方法可以避免将文件下载到磁盘然后将其重新加载并直接加载到内存中? 例子: https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png

目前我可以做到这一点,这需要我将数据写入磁盘,然后将其加载回内存:

Using Images
Using HTTP
download("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png", "google.png")
img = load("google.png")

julia> typeof(img)
Array{RGB{Normed{UInt8,8}},2}

我可以看到我期望的类型是一个 RGB 值数组

但是,如果我尝试直接使用 HTTP 发出请求,我会得到一个向量,它似乎无法轻易转换为图像数组格式

r = HTTP.get("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png")

julia> r.body
13504-element Array{UInt8,1}:
 0x89
 0x50
 0x4e
 0x47
 0x0d
 0x0a
 0x1a
    ⋮
 0x45
 0x4e
 0x44
 0xae
 0x42
 0x60
 0x82

将此图像数据直接转换为正确图像格式的最佳方法是什么?

这已在 ImageMagick.jl

中编程

设置:

using HTTP, ImageMagick
r = HTTP.get("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png")
buffer = IOBuffer(r.body)

解析:

julia> ImageMagick.load(buffer)
184×544 Array{RGBA{N0f8},2} with eltype ColorTypes.RGBA{FixedPointNumbers.Normed{UInt8,8}}:
 RGBA{N0f8}(0.0,0.0,0.0,0.0)        …          RGBA{N0f8}(0.0,1.0,1.0,0.0)
...