我有Lua代码,使用luasocket从网址下载图像:
local http = require('socket.http')
local image = require('image')
image_url = 'https://www.somedomain.com/someimage.jpg'
local body, code = http.request(image_url) -- body has jpg binary data
if not body then error(code) end -- check for errors
为了将此图像读入Torch张量,我将其保存在jpg文件中并使用image.load
读取:
-- open a file in binary mode to store the image
local f = assert(io.open('./temp.jpg', 'wb'))
f:write(body)
f:close()
tensor = image.load('temp.jpg')
有没有办法将二进制jpg数据直接转换为火炬张量而无需从硬盘驱动器进行写入和读取?类似的东西:
tensor = CovertBinaryDataToTorchTensor(body)
谢谢!
答案 0 :(得分:3)
您必须首先将body
字符串打包在ByteTensor中。这可以通过使用storage构建此张量来完成,string(str)可以使用{{3}}设置其内容。
答案 1 :(得分:0)
一个可能的解决方案是使用graphicsmagick。
local body, code = http.request(image_url)
我在https://github.com/clementfarabet/graphicsmagick/blob/master/test/corrupt.lua找到了这个例子,我知道
body
将pcall
作为字符串返回。而且,显然如果final Handler handler = new Handler();
//100ms wait to scroll to item after applying changes
handler.postDelayed(new Runnable() {
@Override
public void run() {
listView.smoothScrollToPosition(selectedPosition);
}}, 100);
返回false,则图像已损坏。