将图像保存到 PNG 文件不是问题,以下代码可以正常工作(使用 Julia 1.5、FileIO 1.4.1 和 ImageIO 0.3.0):
using FileIO
image = rand(UInt8, 200, 150, 3)
save("test.png", image)
但是,我找不到如何将 PNG 图像保存到 RAM 缓冲区。我试过这个:
io = IOBuffer()
save(Stream(format"PNG", io), image)
data = take!(io)
没有错误,但生成的数据太小:只有 809 字节(而不是 test.png 文件的大约 90kB)。
我做错了什么?
最佳答案
您的 I/O 代码是正确的,但您错误地生成了随机图像。
应该是:
using Images
image = [RGB(rand(N0f8,3)...) for x in 1:200, y in 1:150]
现在 png
文件和缓冲区将具有相同的字节大小(由于 png 被压缩,确切的数字将随着每次随机运行而变化):
julia> save(Stream(format"PNG", io), image)
90415
关于image - 如何使用 Julia 将数组保存到 RAM 中的 PNG 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63555097/