我已经在 Matlab 中移植了 SVG 组合标准(2009,https://www.w3.org/TR/2009/WD-SVGCompositing-20090430/)中的 24 种方法中的大部分,但有四种方法(如颜色减淡)继续比较 if 语句中的图像(例如:if Sca == Sa && Dca == 0 ...)但 Matlab 将其视为非标量运算符。
Sc、Dc 是 RGB 图像 Sa、Da 是表示 alpha 通道的灰度掩码 Dca、Sca 是预乘图像:Dca = Dc .* Da;Sca = Sc .* Sa;
if strcmp(compo_meth, 'color-dodge') == 1;
if Sca == Sa && Dca == 0
Dca = (1 - Da) .* Sca;
elseif Sca == Sa
Dca = Sa .* Da + (1 - Da) .* Sca + (1 - Sa) .* Dca;
elseif Sca < Sa
Dca = Sa .* Da .* min(1, Dca/Da .* Sa/(Sa - Sca));
end
Da = Sa + Da - Sa .* Da;
end
如果 Sca == Sa && Dca == 0 时出现错误
|| 的操作数 和 && 运算符必须可转换为逻辑标量值