问题描述
我有一个程序可以在Linux中模拟Windows 10背景渐变。最初,我是通过对ImageMagick System()
命令的composite -blend
调用来完成此操作的,但是,为了消除对System()
的调用,我编写了下面的函数来模拟ImageMagick命令:>
A=Image(newpic);
B=Image(picpath+".cache/resizeOld"+to_string(S)+".jpg");
if(i<=steps)
{
stream<<std::hex<<int(i*(255/steps));
streambuffer=stream.str();
if(streambuffer.length()==1)
{
streambuffer="0"+streambuffer;
}
color=streambuffer;
streambuffer="";
stream.str("");
}
else
{
color="FF";
}
maskA=Image(Geometry(bgW,bgH),Color("#"+color+color+color));
maskB=Image(Geometry(bgW,Color("#"+invertHex(color)+invertHex(color)+invertHex(color)));
A.composite(maskA,Magick::copyAlphaCompositeOp);
B.composite(maskB,Magick::copyAlphaCompositeOp);
compResult=A;
compResult.composite(B,Magick::BlendCompositeOp);
compResult.write((picpath+".cache/transition"+to_string((int)i)+".jpg").c_str());
这在for
循环中,以获取所有必要的过渡步骤。
上述算法的通用目的如下:
我不太确定是什么导致了内存泄漏,因为我为每个图像都明确地使用了=
运算符,我认为这样做可以防止泄漏,因为据我所知,什么也没得到不断添加到。
内置的composite -blend
ImageMagick函数根本不会改变内存使用率,因此似乎某种程度上是我的算法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)