操纵Javascript图像阴影、中间色调和高光图像级别(Photoshop功能)

操纵Javascript图像阴影、中间色调和高光图像级别(Photoshop功能),javascript,image,imagemagick,photoshop,Javascript,Image,Imagemagick,Photoshop,我想知道是否有可能创建一个Javascript浏览器,而不是Node.js脚本,它能够操纵图像的阴影、中间色调和高光图像级别。此功能在图像编辑器中可用,如Photoshop所示 我找到了这个和另一个,但我想不出来 我最后的希望是在带有Node.js和imagemagick绑定的服务器上运行它,但在浏览器上免费运行它要好得多。你是说这样的吗 var值={ 黑道:0,, 虚拟阴影:0, 模糊:0, 价差:0, 颜色:“000” }; $'[name=hshadow]'。在“更改”上,函数{ val

我想知道是否有可能创建一个Javascript浏览器,而不是Node.js脚本,它能够操纵图像的阴影、中间色调和高光图像级别。此功能在图像编辑器中可用,如Photoshop所示

我找到了这个和另一个,但我想不出来


我最后的希望是在带有Node.js和imagemagick绑定的服务器上运行它,但在浏览器上免费运行它要好得多。

你是说这样的吗

var值={ 黑道:0,, 虚拟阴影:0, 模糊:0, 价差:0, 颜色:“000” }; $'[name=hshadow]'。在“更改”上,函数{ values.hshadow=$this.val+'px'; $'.box'.css'box-shadow',Object.valuesvalues.join''; }; $'[name=vshadow]'。在“更改”上,函数{ values.vshadow=$this.val+'px'; $'.box'.css'box-shadow',Object.valuesvalues.join''; }; $'[name=blur]'。在“更改”上,函数{ values.blur=$this.val+'px'; $'.box'.css'box-shadow',Object.valuesvalues.join''; }; $'[name=spread]'。在“更改”上,函数{ values.spread=$this.val+'px'; $'.box'.css'box-shadow',Object.valuesvalues.join''; }; .盒子{ 边框:1px实心ccc; 宽度:100px; 高度:100px; }
使用Imagemagick,您可以

convert image -level bp,wp,gamma result

其中,bp是阴影黑点值,wp是高光白点值,gamma是中点值。请注意,bp和wp值应在ImageMagick编译的量程范围内,例如,对于Q16,值的范围为0到65535。对于Q8,值的范围为0到255。但是,您可以使用bp和wp的百分比值,我发现这要容易得多。gamma值是一个大于0的浮点值,其中值1是不变的。请参见

是,您可以使用以下scriptlistner代码控制级别:

// usage
change_levels(21, 0.5, 255)


function change_levels(num1, num2, num3)
{
  // num1 integer 0 - 255
  // num2 double 0.0 - 1.0
  // num3 integer 0 - 255

  // =======================================================
  var id487 = charIDToTypeID( "Lvls" );
  var desc108 = new ActionDescriptor();
  var id488 = charIDToTypeID( "Adjs" );
  var list19 = new ActionList();
  var desc109 = new ActionDescriptor();
  var id489 = charIDToTypeID( "Chnl" );
  var ref72 = new ActionReference();
  var id490 = charIDToTypeID( "Chnl" );
  var id491 = charIDToTypeID( "Chnl" );
  var id492 = charIDToTypeID( "Cmps" );
  ref72.putEnumerated( id490, id491, id492 );
  desc109.putReference( id489, ref72 );
  var id493 = charIDToTypeID( "Inpt" );
  var list20 = new ActionList();
  list20.putInteger( num1 ); // num 1
  list20.putInteger( num3 ); // num 3
  desc109.putList( id493, list20 );
  var id494 = charIDToTypeID( "Gmm " );
  desc109.putDouble( id494, num2 ); //num 2
  var id495 = charIDToTypeID( "LvlA" );
  list19.putObject( id495, desc109 );
  desc108.putList( id488, list19 );
  executeAction( id487, desc108, DialogModes.NO );
}

警告:您可能必须调整gamma值。输入值可能介于0和1之间,因为它尚未从Photoshop值9.99和0.10进行调整,但您应该能够将其添加到函数中。

请解释如何在浏览器中运行问题中所述的convert命令。您不能在浏览器中使用ImageMagick直接地但是他问如果没有javascript解决方案,那么ImageMagick命令是什么。所以我不明白为什么@xenoid会记下这个答案。我回答了他问题的ImageMagick部分。请仔细阅读这个问题。他问我最后的希望是在带有Node.js和imagemagick绑定的服务器上运行它,但在浏览器上免费运行要好得多。如果你不想删除关于Node.jsNode.js标记的答案,你应该删除Node.js标记