小编Dar*_*kyZ的帖子

Elixir - 以二进制替换位置

问题

我正试图在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

0
推荐指数
1
解决办法
166
查看次数

标签 统计

elixir ×1