1

Тема: WSH: разбиение/склейка изображений

<job>
 <script language="JScript">

  // Разбиение картинки на части
  // использование img_split.wsf имяфайла v_или_h количество_частей
  // v - вертикальное разбиение, h - горизонтальное
  // Для работы требуется бесплатный компонент GflAX (http://pagesperso-orange.fr/pierre.g/xnview/engfl.html)

  var gfl=new ActiveXObject("GflAx.GflAx");
  var arg=WSH.arguments;

  if(arg.length<3)
  {
   WSH.echo("usage: "+WSH.ScriptName+" filename v|h parts");
  }
  else
  {
   var fname=arg(0), parts=arg(2), hrz=arg(1)=="h";
   with(gfl)
   {
    saveFormat=1;     // формат сохраниения JPEG
    saveJPEGQuality=90;
    saveJPEGProgressive=false;
    saveKeepMetadata=false;

    for(var i=0; i<parts; i++)
    {
     loadBitmap(fname);
     if(hrz)        // горизонтальное разбиение
     {
      var size=width/parts;
      crop(i*size,0,size,height);
     }
     else        // вертикальное разбиение
     {
      var size=height/parts;
      crop(0,i*size,width,size);
     }
     saveBitMap(fname.replace(/[^\.]+$/,i+".")); // имена частей: имяфайла.номер.jpg
    }
   }
  }

  </script>
</job>
<job>
 <script language="JScript">

  // Склейка картинки из частей
  // использование img_join.wsf имяфайла v_или_h количество_частей
  // v - вертикальная склейка, h - горизонтальная склейка
  // Для работы требуется бесплатный компонент GflAX (http://pagesperso-orange.fr/pierre.g/xnview/engfl.html)

  var gfl=new ActiveXObject("GflAx.GflAx");
  var arg=WSH.arguments;

  if(arg.length<3)
  {
   WSH.echo("usage: "+WSH.ScriptName+" v|h part1 part2 ...");
  }
  else
  {
   var hrz=arg(0)=="h", parts={}, dx=0, dy=0, y=0, x=0;
   with(gfl)
   {
    for(var i=1; i<arg.length; i++) // вычисляем суммарный размер и смещения частей
    {
     loadBitmap(arg(i));
     if(hrz)
     {
      y=Math.max(y,height);
      x+=width;
      parts[arg(i)]={x:dx,y:0};
      dx+=width;
     }
     else
     {
      x=Math.max(x,width);
      y+=height;
      parts[arg(i)]={x:0,y:dy};
      dy+=height;
     }
    }

    saveFormat=1;          // формат сохраниения JPEG
    saveJPEGQuality=90;
    saveJPEGProgressive=false;
    saveKeepMetadata=false;
    gfl.newBitmap(x,y,0xffffff); // создаем пустую результирующую картинку

    for(var i in parts)         // впечатываем в нее части
      gfl.drawImage(i,parts[i].x,parts[i].y);

    saveBitMap(i.replace(/\..+$/,".join."));
   }
  }

  </script>
</job>