如何将图像文件来源转换为CSV?

我一直在寻找一个可行的图像文件转换成CSV文件的转换器,但是我找不到。你有没有用某种语言编写的程序/代码/建议可以输出类似于以下内容的东西: 1,1, 255,255,255, 0 1,2, 255,0,255, 0 该输出易于理解。我会Lua,但是我也可以使用其他我不理解的语言来得到输出。

谢谢。

我想这样做是因为我有一个中等质量的分形地形生成脚本,只能在一个游戏(roblox)上通过其GUI显示,并且需要占用400k MB。我更愿意在撰写地形后加载一个快速的500x500 png文件。

原文链接 https://stackoverflow.com/questions/8827948

点赞
stackoverflow用户563154
stackoverflow用户563154

你可以使用Lua-GD,一个用于绘图的C语言gdlibrary绑定。

你必须先安装gd及其所有依赖项,然后安装Lua-GD,如手册所述。

以下是Lua代码实现请求的操作:

require 'gd'

local f = io.open('file.csv', 'w')

local img = gd.createFromPng('image.png')
for y = 1, img:sizeY() do
    local line = ''
    for x = 1, img:sizeX() do
        -- 我不确定这个函数的返回值,
        -- 文档不是很清楚。但不应该
        -- 差别太大。
        local r, g, b = img:getPixel(x, y)
        line = line .. r .. ', ' .. g .. ', ' .. b .. ', '
    end
    line = line:gsub(',$', '\n') -- 删除最后一个逗号
    f:write(line)
end
f:close()

请注意,为了简单起见,没有进行错误处理。

2012-01-12 00:45:07