需要将应用于图像的过滤器样式转换为特定的JSON格式

时间:2016-01-19 11:38:00

标签: javascript

需要将应用于图像的过滤器样式转换为特定的JSON格式以存储在数据库中。

写了一个方法来做到这一点,但卡在中间。

<img src="image1.jpg" class="img-responsive"  style="-webkit-filter: brightness(161%) contrast(62%) invert(27%) saturate(193%);">//Filters will be in same order

需要创建JSON格式,如{&#34;亮度&#34;:&#34; 161&#34;,&#34;对比&#34;:&#34; 62&#34;,&#34;反转&#34;:&#34; 27&#34;&#34;饱和&#34;:&#34; 193&#34;}

我试过了:

var style= "-webkit-filter: brightness(161%) contrast(62%) invert(27%) saturate(193%)";
alert(JSON.stringify(crtJson(style)));
function crtJson(paramString){
        var paramArray = (paramString.replace(/[^\d]/g, ''));

        return paramArray;//comes like 1616227193 [no clue how to split.Got stuck]
    }

Js fiddle here

2 个答案:

答案 0 :(得分:0)

你去......试试这个......

'/^([a-zA-Z0-9]|[\p{Arabic}]|[_])*$/u'

注意:如果过滤器被洗牌,那么输出JSON值也会混乱......

JsFiddle

答案 1 :(得分:0)

即使过滤器被洗牌也能正常工作。

以下是使用match()方法和捕获括号的代码:

var style= "-webkit-filter: brightness(161%) contrast(62%) invert(27%) saturate(193%)";
alert(JSON.stringify(crtJson(style)));
function crtJson(paramString){
    var paramArray = {};
    var regexp = /([a-zA-Z]+)\(([0-9]+)%\)/g;
    var array = regexp.exec(paramString);
    while(array != null)
    {
        paramArray[array[1]] = array[2];
        array = regexp.exec(paramString);
    }

    return paramArray;
}