我正试图在Elixir中制作一个基本图像(位图)写入,但我坚持一点.
我试图创建一个将像素设置为二进制的函数.我使用模式匹配,但我的功能显然太慢(超过10分钟将所有像素设置为1024*768的图片).
目前,我有一个大小等于宽度*高度的二进制文件.就像你在下面的代码中看到的那样,我的函数将x和y作为params并且必须在这个位置修改int.
# Function
def replace_by_test(output, width, x, y) do
out_offset = y * width + x
<<
o_before :: binary-size(out_offset),
_ :: binary-size(4),
o_after :: binary
>> = output
<< o_before :: binary, "TEST" :: binary, o_after :: binary >>
end
# Test on a 1024 * 768 resolution image
out_size = 1024 * 768 * 8
output = << 0 :: size(out_size) >>
for x <- 0..(1024*768-1), do: replace_by_test(output, 1024, 0, 0)
Run Code Online (Sandbox Code Playgroud)
使这段代码更快.如果可能,请在不到10秒的时间内运行.
elixir ×1