使用Imlib2保存图像

我试图使用imlib2保存相同的图像两次,但我一直收到以下错误消息:

“保存图像无效的第一个参数(图像已被释放)”

我的Lua代码:

imglib.save(img,"路径1",false)
imglib.save(img,"路径2",true)

imglib.save = function(img,outpath,freeImg)
    local _,err = img.save(img,outpath)
    if (freeImg) then
        img.free(img)
    end
    return err
end

我的C代码:

static int image_save(lua_State *L)
{
  Imlib_Load_Error err;

  Image im = check_Image(L, 1);
  imlib_context_set_image(im);
  imlib_save_image_with_error_return(luaL_checkstring(L,2), &err);

  if (err == IMLIB_LOAD_ERROR_NONE)
  {
    return 0;
  }
  else
  {
    lua_pushnil(L);
    push_load_error_str(L, err, luaL_checkstring(L, 1));
    return 2;
  }
}

static int image_free(lua_State *L)
{
  Image *imp = (Image*)luaL_checkudata(L, 1, "imlib2.image");
  Image im = *imp;
  if(im)
  {
    imlib_context_set_image(im);
    imlib_free_image();
    *imp = NULL;
  }
  return 0;
}

甚至第一个图像也没有保存。我错了什么?如果我仅使用一个保存,它可以完美地工作。

点赞