Юля загружает изображение с URL прямо в память

Я хочу загрузить это изображение из Интернета. Есть ли способ в Джулии избежать загрузки файла на диск, а затем загрузить его обратно и загрузить прямо в память ?? Пример: 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

Каков наилучший способ напрямую преобразовать эти данные изображения в правильный формат изображения?


person Spcogg the second    schedule 03.09.2020    source источник


Ответы (1)


Это было запрограммировано в 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)
...
person Przemyslaw Szufel    schedule 04.09.2020
comment
Спасибо - я думал, что это существует, но не знал, где искать (к сожалению, многие документы/вопросы по этой теме устарели). Кроме того, мне пришлось использовать HTTP.get() вместо HTTP.open(), не уверен, что это только я, но в остальном работает отлично! - person Spcogg the second; 07.09.2020